Javascript正则表达式删除除“quot;之外的所有标点符号&引用;“和”&引用;

Javascript正则表达式删除除“quot;之外的所有标点符号&引用;“和”&引用;,javascript,regex,Javascript,Regex,我一直在使用正则表达式替换来删除文本框值中的所有标点符号,并替换删除后留下的空白。它工作得很好,只是我意识到我需要它将和?留在字段中。这是我目前正在使用的。如何跳过这两个字符,但删除所有其他字符 剧本 var special = special.replace(/[^\w\s]|_/g, "").replace(/\s+/g, " "); 只需为您的字符类使用[^\w\s?]。只需为您的字符类使用[^\w\s?]。@user1881482:您也可以使用以下命令删除第二个替换(对于重复空格):特

我一直在使用正则表达式替换来删除文本框值中的所有标点符号,并替换删除后留下的空白。它工作得很好,只是我意识到我需要它将
留在字段中。这是我目前正在使用的。如何跳过这两个字符,但删除所有其他字符

剧本

var special = special.replace(/[^\w\s]|_/g, "").replace(/\s+/g, " ");

只需为您的字符类使用
[^\w\s?]

只需为您的字符类使用
[^\w\s?]

@user1881482:您也可以使用以下命令删除第二个替换(对于重复空格):
特殊。替换(/(?:[^\w?)+)+/g,”
或更有效的:
特殊。替换(/(?:[^\w?)+)+)+/g“)
@Bergi:您不能在这里进行灾难性的回溯,因为在非捕获组之后没有任何内容。因此,即使在重复的组中有量词,由于之后不会出现任何故障,因此没有理由在到达组的量词后的位置时发生回溯。请注意,可以使用第一个字符区分来改进先例模式(以避免测试字符串中每个字符的交替):
special.replace(/(?=[\W])(?:[^\W?]+.*.++/g,”)
请参阅:好的,可能不会发生,但
([…]+.*.++
看起来terrible@user1881482:您还可以使用以下命令删除第二个替换(对于重复的空格):
special.replace(/(?:[^\w?]+|+++/g,”)
或更有效的命令:
special.replace(/(?:[^\w?)+|+/g,”))
@Bergi:您不能在这里进行灾难性的回溯,因为在非捕获组之后没有任何内容。因此,即使在重复的组中有量词,由于之后不会出现任何故障,因此没有理由在到达组的量词后的位置时发生回溯。请注意,可以使用第一个字符区分来改进先例模式(以避免测试字符串中每个字符的交替):
special.replace(/(?=[\W])(?:[^\W?]+.*.++/g,”)
请参阅:好的,可能不会发生,但
([…]+.*.++
看起来很糟糕