Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于匹配两个字符的正则表达式,其中@是唯一的字符或前面有空格_Javascript_Regex - Fatal编程技术网

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

Javascript 用于匹配两个字符的正则表达式,其中@是唯一的字符或前面有空格,javascript,regex,Javascript,Regex,我正在尝试编写一个正则表达式,我总是将最近键入的字符与正则表达式进行比较,并尝试仅在前面没有任何字符时匹配“@”和“@” 我正在尝试使用: lastTwoEntered.match(/(\s|^)@/); 及 但它们都是不准确的 以下内容不应返回true: "a" “@d” '@@' ' ' “@”如果我明白你想做什么: /^@$|^@$/ “$”表示它以@结尾,如果我理解您的意图: /^@$|^@$/ “$”表示它以@结尾,请尝试以下操作: lastTwoEntered.match( /^

我正在尝试编写一个正则表达式,我总是将最近键入的字符与正则表达式进行比较,并尝试仅在前面没有任何字符时匹配“@”和“@”

我正在尝试使用:

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

但它们都是不准确的

以下内容不应返回true: "a" “@d” '@@' ' '
“@”

如果我明白你想做什么:

/^@$|^@$/


“$”表示它以@

结尾,如果我理解您的意图:

/^@$|^@$/

“$”表示它以@

结尾,请尝试以下操作:

lastTwoEntered.match( /^ ?@$/);
问题符号与空格匹配0或1次。你还可以找到其他有用的量词。 要彻底理解这一点,您应该了解贪婪和懒惰匹配。这是一篇很好的解释文章。 假设匹配器将尝试匹配正则表达式的最大有效字符串


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

任何东西、空间、at、任何东西

行的开头、at、anything

第二场比赛:

开始,除了边界之外的任何东西,在,任何东西

这些都不是你想要的

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

尝试以下方法:

lastTwoEntered.match( /^ ?@$/);
问题符号与空格匹配0或1次。你还可以找到其他有用的量词。 要彻底理解这一点,您应该了解贪婪和懒惰匹配。这是一篇很好的解释文章。 假设匹配器将尝试匹配正则表达式的最大有效字符串


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

任何东西、空间、at、任何东西

行的开头、at、anything

第二场比赛:

开始,除了边界之外的任何东西,在,任何东西

这些都不是你想要的


将正则表达式翻译为正常语音是一种很好的做法,以确保它是您想要的。

我只想得到“@”和“@”,您的标题是“后跟一个空格”,但您的示例显示它前面有一个空格。在任何情况下,都可以使用
^
标记字符串的开头;您只需在第一个代码末尾添加
$
,就可以了。是一个非常有用的工具。它的上下文是什么?你是不是在尝试匹配类似twitter的名字标签?我只想得到“@”和“@”,你的标题是“后跟一个空格”,但你的例子显示它前面有一个空格。在任何情况下,都可以使用
^
标记字符串的开头;您只需在第一个代码末尾添加
$
,就可以了。是一个非常有用的工具。它的上下文是什么?你是不是在尝试匹配类似twitter的名字标签?