Javascript jQuery-RegEx工作异常

Javascript jQuery-RegEx工作异常,javascript,regex,Javascript,Regex,我对RegExp很陌生。这是我的问题。我有一个输入值。我将RegExp“规则”应用于该输入值。规则以输入值开头,不区分大小写。让我们举个例子。我的参考字符串是Paris(75018),输入值是Pari。在这种情况下,一切正常。但是,如果输入值是巴黎(7),它将不起作用。在这种情况下,“系统”告诉我没有匹配,我不明白。它是匹配的!希望有人能帮助。提前感谢您的回复。干杯。马克 我的html: <input id="btn" type="submit" />​ 问题在于(在正则表达式中

我对RegExp很陌生。这是我的问题。我有一个输入值。我将RegExp“规则”应用于该输入值。规则以输入值开头,不区分大小写。让我们举个例子。我的参考字符串是
Paris(75018)
,输入值是
Pari
。在这种情况下,一切正常。但是,如果输入值是巴黎(7),它将不起作用。在这种情况下,“系统”告诉我没有匹配,我不明白。它是匹配的!希望有人能帮助。提前感谢您的回复。干杯。马克

我的html:

<input id="btn" type="submit" />​
问题在于
在正则表达式中有特殊含义。要从字面上理解它,必须将其转义为
\(
)。请参见此处:

请注意,这里有一个双反斜杠;这是因为反斜杠本身在带引号的字符串中有特殊的含义,所以您必须转义反斜杠才能在正则表达式中按字面意思获得它

还要注意,对于literal(unquoted)正则表达式,您不需要转义反斜杠,只需转义括号即可。例如:
test.match(/Paris\(7/)

在正则表达式中,未scaped的
表示“启动捕获组”。捕获组是在运行匹配数据后检索匹配数据的方式。有关这些数据的工作原理,请参阅此处:

如果您事先不知道
loc
将包含什么内容,可以用转义版本替换括号的所有实例,如下所示:

var locRegExp = new RegExp("^" + loc.replace(/\(/g, "\\(").replace(/\)/g, "\\)"), "i");
<>但请注意,除了括号之外,还有许多特殊的字符需要测试。如果你发现自己替换了很多字符,可能会考虑尝试一种不同的方法。例如,你只是在寻找一个不区分大小写的搜索,从测试字符串的开头开始吗?因为你不需要正则表达式。按,您只需执行子字符串搜索:

test.toLowerCase().indexOf(loc.toLowerCase()) === 0

您必须转义正则表达式使用的特殊字符。在您的示例中,
就是那个字符。

这是因为”()是一个特殊字符,应该转义。转义模式应该是:

Paris \(7

你好,本。谢谢你花时间来帮助我。可以用regexp应用规则吗?或者用编程的方式来实现吗?@Marc,我不明白你说的“规则”是什么意思。我的意思是,是否可以自动添加斜杠?另请参阅@pimvdb的链接。如果需要,您可以这样替换所有特殊字符。但如果您发现自己这样做,正则表达式可能不是解决问题的最佳方法。
test.toLowerCase().indexOf(loc.toLowerCase()) === 0
Paris \(7