如果文本需要完全匹配,那么在 JavaScript 中的正则表达式是什么(如果有影响的话)?也就是说,在字符串的另一端不能有多余的字符。
例如,如果我要匹配abc
,那么1abc1
,1abc
和abc1
都不会匹配。
如果文本需要完全匹配,那么在 JavaScript 中的正则表达式是什么(如果有影响的话)?也就是说,在字符串的另一端不能有多余的字符。
例如,如果我要匹配abc
,那么1abc1
,1abc
和abc1
都不会匹配。
使用起始和结束定界符:^abc$
^abc def ghi$
。 - Jake Pearson/^(?:abc|def)$/
或 /^(abc|def)$/
。否则,如果未使用该组,则 /^abc|def$/
将在字符串开头匹配 abc
或在字符串末尾匹配 def
。 - Wiktor Stribiżew这要看情况。您可以
string.match(/^abc$/)
但这不会匹配以下字符串:'the first 3 letters of the alphabet are abc. not abc123'
我认为你想使用 \b
(单词边界):
var str = 'the first 3 letters of the alphabet are abc. not abc123';
var pat = /\b(abc)\b/g;
console.log(str.match(pat));
实时示例:http://jsfiddle.net/uu5VJ/
如果前一种解决方案适用于您,我建议不要使用它。
这意味着您可能会有以下内容:
var strs = ['abc', 'abc1', 'abc2']
for (var i = 0; i < strs.length; i++) {
if (strs[i] == 'abc') {
//do something
}
else {
//do something else
}
}
虽然你可以使用
if (str[i].match(/^abc$/g)) {
//do something
}
对我而言,一个简单字符串比较使用条件表达式更为高效。如果需要使用动态模式,则需使用正则表达式。
JavaScript正则表达式详解请参考:https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions
"是行开头的"^",而"$"则是行结尾。例如:
var re = /^abc$/;
可以匹配 "abc" 但不能匹配 "1abc" 或 "abc1",你可以从https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions了解更多信息。
\babc\b
,这将允许例如123 abc 123
匹配abc
(但不包括问题中的负例);然而,^abc$
将确保a
在字符串的开头,c
在末尾 - 否则就不会匹配。 - Andrew