有几个不太经常使用的正则表达式:
(?:)、(?=exp)、(?!exp)、(?<=exp)、(?<!exp)
请问这几个正则表达式怎样使用啊?
书上说是匹配位置的,看了半天还是不怎么明白,
希望高手来解答一下,谢谢了!!!
(?:)、(?=exp)、(?!exp)、(?<=exp)、(?<!exp)
请问这几个正则表达式怎样使用啊?
书上说是匹配位置的,看了半天还是不怎么明白,
希望高手来解答一下,谢谢了!!!
解决方案 »
- 定义Observer时,怎样向观察者传递一个标记?
- 提取带html样式的文本内容!
- dhtmlxTree样式问题
- Get File Size on Client
- ext TabPanel 动态添加 GridPanel 问题 在线
- js 火孤中点击楼层上有数字,实现复制到剪切板。为什么行不通?
- 老问题,如何把F4键定义为表单提交的功能,既发送键?
- 怎样删除当前元素所处的整个li
- MyEclipse连接SqlServer2008出现enter your password
- 如何用url请求百度地图的api
- 如何在JS中 自动的执行 .exe的执行文件?
- 请教象携程网http://www.ctrip.com/里那个出发地址是怎么实现的,有具体代码吗?
JS只支持这3个(?:)、(?=exp)、(?!exp) 如果书上就告诉你是匹配位置的..那这书也太破了吧?
// MM: 01-12
// dd: 01-31
var regyyyyMMdd = /^[12]\d{3}(0\d|1[0-2])([0-2]\d|3[01])$/;document.write("20091021", ": ", regyyyyMMdd.test("20091021"), "<br />");
document.write("20093121", ": ", regyyyyMMdd.test("20093121"), "<br />");
document.write("20091321", ": ", regyyyyMMdd.test("20091321"), "<br />");
document.write("20090331", ": ", regyyyyMMdd.test("20090331"), "<br />");
document.write("20090332", ": ", regyyyyMMdd.test("20090332"), "<br />");
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
http://topic.csdn.net/u/20080325/17/fb7a3e8d-029a-4d8e-89ae-77a9d28ec301.html
http://topic.csdn.net/u/20080716/22/80cdd418-a0e9-4e7e-8435-df6d4bc11c4a.html
Java中虽然支持(?<=Exp)和(?<!Exp),但Exp中不能出现不定长度的量词,量词只支持“?”
.NET和PHP中全部支持,且支持Exp中出现长度不定的量词,如“*”、“+”、“{m,n}”等
参考
正则基础之——环视
字符串:Mytest,正则:My(?:test),不会增加分组以及捕获test,结果为Mytest。
(?=exp) 匹配exp前面的位置
字符串:Mytest,正则:My(?=test),获取test之前的匹配内容,结果为My
(?<=exp) 匹配exp后面的位置
字符串:Mytest,正则:(?<=My)test,获取My之后的匹配内容,现找到My,但是不包含在结果中,结果为test
(?!exp) 匹配后面跟的不是exp的位置
字符串:Mytest,正则:My(?!test),因为My之后是test,所以没有匹配结果。
(?<!exp) 匹配前面不是exp的位置