【问题标题】:Javascript regex to remove all punctuation except "." and "?"Javascript 正则表达式删除除“。”之外的所有标点符号和 ”?”
【发布时间】:2015-01-23 11:24:49
【问题描述】:

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

脚本

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

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    只需将[^\w\s?.] 用于您的角色类。

    【讨论】:

    • @user1881482:您还可以使用:special.replace(/(?:[^\w?.]+|_+)+/g, " ") 或更高效:special.replace(/(?:[^\w?.]+_*|_+)+/g, " ") 删除第二个替换(用于重复空格)
    • @Bergi:你不能在这里进行灾难性的回溯,因为在非捕获组之后什么都没有。因此,即使您在重复组中有量词,由于之后不会失败,因此一旦到达组的量词之后的位置,就没有理由发生回溯。
    • 请注意,可以使用第一个字符区分来改进先例模式(以避免测试字符串的每个字符的交替):special.replace(/(?=[\W_])(?:[^\w?.]+_*|_+)+/g, " ") 请参阅:regex101.com/r/tD7wB0/2
    • 好吧,这可能不会发生,但([…]+_*|_+)+ 看起来很糟糕
    猜你喜欢
    • 1970-01-01
    • 2013-02-21
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    相关资源
    最近更新 更多