社区
JavaScript
帖子详情
关于正则《零宽断言语法》的一点点疑问。求进来指教或一起学习。
Left_you
2011-10-20 06:27:16
① (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
② (?=exp) 匹配exp前面的位置
③ (?<=exp) 匹配exp后面的位置
④ (?!exp) 匹配后面跟的不是exp的位置
⑤ (?<!exp) 匹配前面不是exp的位置
①、③,⑤貌似有语法错误。
②和④ 求具体例子,以及详细的说明。
...全文
81
7
打赏
收藏
关于正则《零宽断言语法》的一点点疑问。求进来指教或一起学习。
① (?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) ② (?=exp) 匹配exp前面的位置 ③ (?<=exp) 匹配exp后面的位置 ④ (?!exp) 匹配后面跟的不是exp的位置 ⑤ (?<!exp) 匹配前面不是exp的位置 ①、③,⑤貌似有语法错误。 ②和④ 求具体例子,以及详细的说明。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Mr-Jee
2011-10-21
打赏
举报
回复
var str = 'Zheng Yi Jian';
var reg = /^(\S+)\s*(\S+)\s*(\S+)$/;
var m = reg.exec(str);
alert(m[1]);
举个例子吧。。。
具体的方法很多 这个应该算简单的。
Left_you
2011-10-21
打赏
举报
回复
理解了!
只是我还想问一个, 捕获到的字符串能不能放到javascript的变量里面去?
比如: /^(\d{0,10}) (\d{0,10}) (\d{0,10})$/ 这个匹配一个外国人名字,假如我想拿到他的first name 放到变量 fname里面,怎么做?有直接的方法吗?
这个,间接的思路倒是有,比如substr()、substring()、replace()之类的。
中午结贴...
q107770540
2011-10-21
打赏
举报
回复
顶楼上
正则表达式在不同的语言下,所支持的语法也不同
如JS就不支持命名捕获组和逆序环视
对正则支持最好的还是。NET
Mr-Jee
2011-10-21
打赏
举报
回复
① (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
② (?=exp) 匹配exp前面的位置
③ (?<=exp) 匹配exp后面的位置
④ (?!exp) 匹配后面跟的不是exp的位置
⑤ (?<!exp) 匹配前面不是exp的位置
首先 javascript不支持1 3 5 即命名分组、逆序环视。
其次 断言的作用是做一次预查,预判断。比如
^(?!a)abc
在匹配"bcdef"的时候
首先从开始进行匹配,当走到(?!a)的时候先判断
"bcdef"
中的b位置是否是a,如果是,则匹配失败,本例中是b而不是a,所以(?!a)没有匹配,所以负断言就成立,接下来开始匹配abc,这个时候还是从b的位置开始匹配(重点:断言是不占据匹配字符的,因此又叫零宽断言),本正则本身是个矛盾的正则,所以不可能匹配。具体的,可以参考《精通正则表达式》一书,或楼上所说过客的正则博客。都是非常优秀的资料
诺维斯基
2011-10-21
打赏
举报
回复
[Quote=引用 1 楼 left_you 的回复:]
(?!1)\d* 这个匹配 不以1开头的数字
(?!1|2)\d* 这个匹配 不以1或2开头的数字
问题就是 (?=exp)了, 不了解。。。
尤其是(?=exp)和(?!exp)组合来匹配字符串的头尾部分,不知道怎么写了。
所以这里主要是求(?=exp) 以及(?=exp)、(?!exp)组合的例子。
顺便问问①、③,⑤是不是真的有语法错误?因为那个检测正则表达式的工具是……
[/Quote]
lz 听说过“过客”没有,对于在这里,学习正则的人来说 ,不知道的话,可就有点遗憾了。
给:
http://blog.csdn.net/lxcnn/article/details/4304754
肯定对你有帮助。
另外祝你:早成正则大道!!
峭沙
2011-10-20
打赏
举报
回复
①(pattern) 匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
②(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
③(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
④(?!pattern) 负向预查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
没见过(?<=exp),(?<!exp)这样的写法
Left_you
2011-10-20
打赏
举报
回复
(?!1)\d* 这个匹配 不以1开头的数字
(?!1|2)\d* 这个匹配 不以1或2开头的数字
问题就是 (?=exp)了, 不了解。。。
尤其是(?=exp)和(?!exp)组合来匹配字符串的头尾部分,不知道怎么写了。
所以这里主要是求(?=exp) 以及(?=exp)、(?!exp)组合的例子。
顺便问问①、③,⑤是不是真的有语法错误?因为那个检测正则表达式的工具是我自己写的,用的javascript。
正则
表达式全解析+常用示例
在开始写这篇文章之前,我的心里还是纠结的。我在问自己要不要写这篇东西,关于相似的内容网上多如牛毛,而且...关于
正则
表达式一直都是个让很多程序员都觉得很郁闷的一个东西,我觉得创造
正则
表达式的那个家伙简直就是
php
正则
表达式
语法
大全
正则
表达式是与 SIMILAR TO 或 REGEXP 搜索条件
一起
使用,还是与 REGEXP_SUBSTR 函数
一起
使用 元字符是否在
正则
表达式的字符类的内部 在继续之前,应了解字符类的定义。字符类是一组括在方括号内的字符,将...
正则
表达式30分钟入门教程
版本:v2.2 (2007-5-28) 作者:deerchao 来源:unibetter大学生社区 转载请注明来源目录1.本文目标 2.如何使用本教程 3.
正则
表达式到底是什么? 4.入门 5....
零宽
断言
15.负向
零宽
断言
16.注释 17.贪...
java
正则
校验的坑&
正则
校验公式正确性
如果大家有更好的更简便的方法请
指教
哈): public class FormulaCheckUtil { /** * 验证四则运算表达式是否准确 * 注意:此处
正则
表达式都应【写错误形式】,而非【正确形式然后取反】,否则只要有一次匹配成功...
正则
表达式
入门测试
正则
表达式元字符字符转义重复字符类分枝条件反义分组后向引用
零宽
断言
负向
零宽
断言
注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录 本文目标 30...
JavaScript
87,901
社区成员
224,628
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章