对于我的生活,我无法弄清楚为什么这个正则表达式
^\.(?=a)$
不符合
".a"
谁知道为什么?
我将取消此处提供的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
答案 0 :(得分:4)
它不起作用的原因是因为前瞻实际上并没有消耗任何字符,所以你的匹配位置不会前进。
^\.(?=a)$
匹配行的开头(^
- 匹配),后跟文字.
(\.
- 这也匹配),然后(不消耗任何字符),检查下一个字符是否为文字a
((?=a)
)。它是,所以前瞻匹配。然后断言你的位置在字符串的末尾($
)。这是不的情况,因为我们仍然在.
之后,因此匹配失败。
另一种可能的匹配表达式是
^\.(?=a$)
其效果与上面相同,但关于行尾的断言包含在前瞻中,所以这一次匹配。
答案 1 :(得分:3)
你的正则表达式只匹配一个后跟'a'的句号,而不包括匹配中的'a'。 另一个问题是你在一个基本上被忽略的角色之后使用$。
删除$,它将按照描述工作。
奖金:我很高兴最近使用http://www.regexpal.com/