使用Javascript的正则表达式不区分大小写[重复]
Posted
技术标签:
【中文标题】使用Javascript的正则表达式不区分大小写[重复]【英文标题】:Case insensitive in regex with Javascript [duplicate] 【发布时间】:2012-11-01 03:25:35 【问题描述】:可能重复:Case insensitive regex in javascript
现在我有这个:
my_list.match(new RegExp("(?:^|,)"+my_name+"(?:,|$)")))
其中,鉴于以下情况:
my_list = "dog, cat, boy"
my_name = "dog"
将返回 true。
如果我有
my_list = "Dog,Cat,boy"
和
my_name = "boy"
正则表达式不匹配。为了能够匹配不区分大小写,我将如何适应?
【问题讨论】:
【参考方案1】:首先:永远不要从未转义的变量中构建正则表达式。使用此函数先转义所有特殊字符:
RegExp.quote = function(str)
return str.replace(/[.?*+^$[\]\\()|-]/g, "\\$&");
;
它修改了RegExp
对象,你只需要包含它一次。现在:
function stringContains(str, token)
var
spaces = /^\s+|\s+$/g, // matches leading/trailing space
token = token.replace(spaces, ""), // trim the token
re = new RegExp("(?:^|,)\\s*" + RegExp.quote(token) + "\\s*(?:,|$)", "i");
return re.test(str);
alert( stringContains("dog, cat, boy", " Dog ") );
注意
"i"
使 new RegExp
不区分大小写。
这两个添加了\s*
,允许在逗号之前/之后使用空格。
"(?:^|,)\\s*"
是正确的,而不是 "(?:^|,)\s*""
(在 JS 字符串中,所有反斜杠都需要转义)。
【讨论】:
以上是关于使用Javascript的正则表达式不区分大小写[重复]的主要内容,如果未能解决你的问题,请参考以下文章