Javascript str.search(“?”)返回Unexpected Quantifier错误

时间:2011-07-29 19:49:58

标签: javascript jquery

我可以使用str.search("me");str.search("=");

搜索字符串

但是当我搜索str.search("?");

我收到错误Unexpected Quantifier.

为什么? 如何使用正则表达式以外的其他内容搜索"?"

4 个答案:

答案 0 :(得分:6)

“?”是正则表达式中的特殊字符(“量词”之一),表示“匹配前一个零或一次”。在这种情况下导致错误,因为它之前没有任何内容。但是,“一个?”不会抛出异常,但会匹配“b”,所以这是一个重要的事情需要注意。

如果使用带有正则表达式的String.search(如karim79指出的那样,这不是唯一的方法),请使用"[?]""\\?"/\?/。这些表格会阻止“?”从被视为特殊的正则表达式构造。

快乐的编码。

答案 1 :(得分:5)

alert(str.indexOf("?")); // returns position as integer if present, -1 otherwise

典型的使用场景是:

if(str.indexOf("?") !== -1) {
    // present
}

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/indexOf

答案 2 :(得分:1)

试试这个:

alert(str.search("\\?"));

答案 3 :(得分:1)

它是量词,你不能直接使用它。来自javascriptkit.com

  

是{0,1}的缩写。匹配零次或一次。

     

MSDN

     

匹配前面的字符或子表达式零或一   时间。例如,'do(es)?'匹配“do”或“do”中的“do”。 ?是   相当于{0,1}

这是正确的用法:

str.search("\\?")