为什么string.search在这个例子中失败了?

时间:2011-10-05 14:09:18

标签: javascript

我正在粘贴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,怎么样?哪个角色弄乱了搜索?

请注意,我没有在实际代码中使用名称字符串和子字符串

3 个答案:

答案 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