JavaScript 正则表达式

标签 javascript regex string replace

这是我的字符串

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/

相关文章:

javascript - 是否可以通过 iframe 更改 javascript 变量?

python - 如何扩展正则表达式以排除文件夹中的所有文件?

Ruby 字母数字检查

用 strstr 不行吗?

java - 将字符串转换为标记

javascript - 使用 JQM 和 addClass 更改按钮颜色每页仅有效一次

javascript - 排序数组,优先排序一些项目

javascript - Google 仪表图表给出未知 header 类型 : 24

java - Java 字符串数字部分的正则表达式

string - PostgreSQL 字符串比较