我需要 javascript 正则表达式来匹配后面没有空格字符并且前面有 @ 的单词,如下所示:

@bug - 找到“@bug”,因为它后面没有空格

@bug 和我 - 什么也没找到,因为“@bug”后面有空格

@bug 和 @another - 仅找到“@another”

@bug和@another之类的东西-什么都找不到,因为两个词都跟着空格。

帮助?
添加:
字符串是从中获取的,FF 将它自己的标签放在它的末尾。虽然我基本上只需要最后一个以@开头的单词,但不能使用$(end-of-string)。

最佳答案

尝试 re = /@\w+\b(?! )/ 。这会查找一个单词(确保它捕获整个单词)并使用否定前瞻来确保该单词后面没有空格。

使用上面的设置:

var re = /@\w+\b(?! )/, // etc etc

for ( var i=0; i<cases.length; i++ ) {
    print( re2.exec(cases[i]) )
}

//prints
@bug
null
@another
null

这将不起作用的唯一方法是,如果您的单词以下划线结尾,并且您希望该标点符号成为单词的一部分:例如,“@bug 和 @another_ blahblah”将挑选出@another,因为 @another 后面没有跟空间。
这似乎不太可能,但是如果您也想处理这种情况,则可以使用/@\w+\b(?![\w ]/,这将返回null@bug and @another_@bug_@another and @bug_

关于Javascript 正则表达式 : find a word NOT followed by space character,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8584981/

10-12 13:18