Javascript 精确匹配字符串
如果文本是完全匹配的,那么只有在JavaScript中才匹配的正则表达式是什么?也就是说,字符串的另一端不应该有额外的字符Javascript 精确匹配字符串,javascript,regex,Javascript,Regex,如果文本是完全匹配的,那么只有在JavaScript中才匹配的正则表达式是什么?也就是说,字符串的另一端不应该有额外的字符 例如,如果我试图匹配abc,则1abc1,1abc,和abc1将不匹配。使用开始和结束分隔符:^abc$以“^”开头,以“$”结尾。例如: var re = /^abc$/; 将匹配“abc”,但不匹配“1abc”或“abc1”。您可以在了解更多信息,具体视情况而定。你可以 string.match(/^abc$/) 但这与下面的字符串不匹配:“字母表的前3个字母是ab
例如,如果我试图匹配
abc
,则1abc1
,1abc
,和abc1
将不匹配。使用开始和结束分隔符:^abc$以“^”开头,以“$”结尾。例如:
var re = /^abc$/;
将匹配“abc”,但不匹配“1abc”或“abc1”。您可以在了解更多信息,具体视情况而定。你可以
string.match(/^abc$/)
但这与下面的字符串不匹配:“字母表的前3个字母是abc。不是abc123'
我想您应该使用\b
(单词边界):
var str='字母表的前3个字母是abc。不是abc123';
var pat=/\b(abc)\b/g;
console.log(str.match(pat))代码>@Jake,我很高兴howards的答案有效,但我想你应该注意,只有当字符串中只有abc项时,它才会有效。例如,它与“字母表中的前3个字母是abc”不匹配。这对我来说很有效,也许我的示例应该是“abc def ghi”作为匹配目标。@Jake如果您的字符串是“abc def ghi”,则/^abc$/将不起作用。例:我明白了,如果我想匹配“abc def ghi”,我的正则表达式应该是^abc def ghi$
注意:要使一个模式与整个字符串匹配,可能需要用一个(非)捕获组包装它:/^(?:abc|def)$/
或/^(abc|def)$/
。否则,如果不使用组,/^abc|def$/
将匹配字符串开头的abc
,或字符串结尾的def
。@NiharSawant这是因为这不是OP所问问题的答案。OP显然不想匹配“字母表的前3个字母是abc”,这里的第二个解决方案不适用于匹配一般正则表达式,例如/^[abc]+$/对于那些新加入正则表达式的人,有两个很好的答案,这取决于你在寻找什么。询问者确实想要\babc\b
,这将允许例如123 abc 123
与abc
匹配(但不包括问题中的负面示例);但是,^abc$
将确保a
位于字符串的开头,而c
位于末尾,否则它将不匹配。