我正在尝试检查字符串是否包含以下任何单词:
AB|AG|AS|Ltd|KB|University
我当前的代码:
var acceptedwords = '/AB|AG|AS|Ltd|KB|University/g'
var str = 'Hello AB';
var matchAccepted = str.match(acceptedwords);
console.log(matchAccepted);
if (matchAccepted !== null) { // Contains the accepted word
console.log("Contains accepted word: " + str);
} else {
console.log("Does not contain accepted word: " + str);
}
但是由于某些奇怪的原因,这并不匹配。
有什么想法我做错了吗?
这不是在Javascript中定义文字正则表达式的正确方法。
更改
var acceptedwords = '/AB|AG|AS|Ltd|KB|University/g'
至
var acceptedwords = /AB|AG|AS|Ltd|KB|University/;
您可能会注意到我删除了g标志:它没有用,因为您只想知道是否有一场比赛,就不想全部获得。您甚至不必在match
这里使用,可以使用test
:
var str = 'Hello AB';
if (/AB|AG|AS|Ltd|KB|University/.test(str)) { // Contains the accepted word
console.log("Contains accepted word: " + str);
} else {
console.log("Does not contain accepted word: " + str);
}
如果要使用字符串构建正则表达式,假设它们都不包含任何特殊字符,则可以执行
var words = ['AB','AG', ...
var regex = new RegExp(words.join('|'));
如果您的名字可能包含特殊字符,则必须使用函数对其进行转义。
如果您希望您的单词不属于其他单词(意味着您不想匹配“ ABC”),则应检查单词边界:
regex = new RegExp(words.map(function(w){ return '\\b'+w+'\\b' }).join('|'),'g');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句