我正在粘贴javascript打印的确切字符串:
string: "testare atasament fisier,tip nota - reamintire (1),Diverse,Telefon,Fisier,tip nota Azom" without the ""
substring: "tip nota - reamintire (1)" again without the ""
只是写那些“”来表明没有任何空白的空格(也在代码中检查)
的结果
string.search(substring);
总是-1,怎么样?哪个角色弄乱了搜索?
请注意,我没有在实际代码中使用名称字符串和子字符串
答案 0 :(得分:3)
search
方法采用正则表达式对象,如果给它一个字符串,则用它来创建正则表达式对象。
参考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/search
(
和)
在正则表达式中具有特殊含义,因此它们不包含在应匹配的字符中。您实际上将查找字符串"tip nota - reamintire 1"
。
您可以使用\
字符来转义正则表达式中的字符。如果在字符串文字中使用它们,则必须转义\
个字符,因此:
var substring = "tip nota - reamintire \\(1\\)";
您还可以使用正则表达式文字:
var substring = /tip nota - reamintire \(1\)/;
答案 1 :(得分:2)
它对我有用 - 使用indexOf
"testare atasament fisier,tip nota - reamintire (1),Diverse,Telefon,Fisier,tip nota Azom"
.indexOf("tip nota - reamintire (1)");
产量
25
搜索采用正常表达式,其中 indexOf 采用字符串。
“tip nota - reamintire(1)”中的括号作为一个组,您必须将它们转义为匹配实际的括号。
答案 2 :(得分:2)
这是因为search function有一个regexp作为参数。
您必须使用\\
转义括号:
var string= "testare atasament fisier,tip nota - reamintire (1),Diverse,Telefon,Fisier,tip nota Azom" ;
var substring = "tip nota - reamintire (1)" ;
var substring2 = "tip nota - reamintire \\(1\\)" ;
alert(string.search(substring)); // -1
alert(string.search(substring2)); // 25