JS正则表达式,基本前瞻

时间:2016-03-08 02:04:06

标签: javascript regex node.js

对于我的生活,我无法弄清楚为什么这个正则表达式

^\.(?=a)$

不符合

".a"
谁知道为什么?

我将取消此处提供的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

2 个答案:

答案 0 :(得分:4)

它不起作用的原因是因为前瞻实际上并没有消耗任何字符,所以你的匹配位置不会前进。

^\.(?=a)$

匹配行的开头(^ - 匹配),后跟文字.\. - 这也匹配),然后(不消耗任何字符),检查下一个字符是否为文字a(?=a))。它是,所以前瞻匹配。然后断言你的位置在字符串的末尾($)。这是的情况,因为我们仍然在.之后,因此匹配失败。

另一种可能的匹配表达式是

^\.(?=a$)

其效果与上面相同,但关于行尾的断言包含在前瞻中,所以这一次匹配。

答案 1 :(得分:3)

你的正则表达式只匹配一个后跟'a'的句号,而不包括匹配中的'a'。 另一个问题是你在一个基本上被忽略的角色之后使用$。

删除$,它将按照描述工作。

奖金:我很高兴最近使用http://www.regexpal.com/