0

这是我的字符串

str = "asd;images30/127ef-30-30-wm.jpg;59 | asd;images30/127ef-30-30-wm.jpg;60 | "

和正则表达式是

var re = new RegExp(".*?;.*?;"+$(this).parent().attr("id")+" | ","ig");

和替换功能是

str.replace(re,'');

我实际上想asd;images30/127ef-30-30-wm.jpg;59 |从字符串中删除。以上正则表达式返回

 | asd;images30/127ef-30-30-wm.jpg;60 | 

而预期是

asd;images30/127ef-30-30-wm.jpg;60 | 
4

1 回答 1

3

您必须将|RegExp 调用中的替换为\\|. 这是必要的,因为单个反斜杠将被忽略(如果之后的字符已在转义序列中使用,例如,如果它是一个n,这两个将成为换行符转义序列,但对于不属于转义序列的字符,单个反斜杠被忽略),并且额外的一个将导致单个的出现。然后可以在正则表达式中使用它来指示您正在转义文字管道符号,而不是内置的正则表达式“替代”符号。

请注意,如果您的idfrom jQuery 可能是非数字的,您可能还需要转义该值。您可以使用这样的函数对其进行转义

要在此处硬编码一个 ID(根据您的示例,该值显然是 59),如果您删除双反斜杠,它不会删除第一个管道:

str = "asd;images30/127ef-30-30-wm.jpg;59 | asd;images30/127ef-30-30-wm.jpg;60 | ";
var re = new RegExp(".*?;.*?;"+59+" \\| ","ig");
str = str.replace(re,'');

alert(str)
于 2012-08-26T00:15:23.047 回答