这是我的字符串
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 |
最佳答案
您必须将 RegExp 调用中的 |
替换为 \\|
。这是必要的,因为单个反斜杠将被忽略(如果随后的字符已在转义序列中使用,例如,如果它是 n
,则这两个将成为换行符转义序列,但对于不是转义序列的一部分,单个反斜杠将被忽略),附加的反斜杠将导致单个反斜杠出现。然后可以在正则表达式中使用它来指示您正在转义文字管道符号,而不是内置正则表达式“备用”符号。
请注意,如果 jQuery 中的 id
可能是非数字,您可能还需要转义该值。您可以使用类似 this 的函数来转义它。 .
要在此处硬编码 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)
关于JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12126648/