我可以使用str.search("me");
和str.search("=");
但是当我搜索str.search("?");
我收到错误Unexpected Quantifier.
为什么?
如何使用正则表达式以外的其他内容搜索"?"
?
答案 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("\\?")