用于匹配两个字符的正则表达式,其中@是唯一的字符或前面有空格

时间:2017-01-11 20:13:06

标签: javascript regex

我正在尝试编写一个正则表达式,我总是将最近输入的字符与正则表达式进行比较并尝试仅匹配' @'什么都没有在它之前和' @'

我正在尝试使用:

lastTwoEntered.match(/(\s|^)@/);

lastTwoEntered.match( /^\B@/);

但它们都不准确。

以下内容不应该返回true: '一个@' ' @ d' ' @@' ' ' ' @'

2 个答案:

答案 0 :(得分:1)

如果我明白你要做什么:

/ ^ @ $ | ^ @ $ /

" $"意味着它以@

结尾

答案 1 :(得分:1)

试试这个:

lastTwoEntered.match( /^ ?@$/);

问题符号与空格匹配0或1次。您可以找到其他有用的量词here。 要彻底理解为什么这有效,你应该理解贪婪和懒惰的匹配。 This是解释它的好帖子。 我们只是说匹配器会尝试匹配正则表达式中最大的有效字符串。

因此,对于第一个正则表达式,您提供的匹配将是:

任何东西,空间,at,任何东西

行首,在,任何内容

第二场比赛:

开始,除了边界,任何东西

这些都不是你想要的。

将正则表达式转换为正常语音是一种很好的做法,以确保它符合您的要求。