代码之家  ›  专栏  ›  技术社区  ›  JohnIdol

用regex替换Javascript字符串以去除非法字符

  •  47
  • JohnIdol  · 技术社区  · 14 年前

    需要一个函数来去除javascript中的一组非法字符: |&;$%@"<>()+,

    这是一个需要用正则表达式解决的经典问题,也就是说现在 I have 2 problems .

    var cleanString = dirtyString.replace(/\|&;\$%@"<>\(\)\+,/g, "");
    

    我用反斜杠逃离了regex特殊字符,但我很难理解到底发生了什么。

    他们中的大多数 似乎有效,但一旦我把他们放在同一个正则表达式取决于顺序的更换是打破。

    i、 e.这行不通--> dirtyString.replace(/\|<>/g, ""):

    感谢您的帮助!

    4 回复  |  直到 14 年前
        1
  •  106
  •   Lekensteyn    14 年前

    你需要的是 character classes . 在这方面,你只需要担心 ] , \ - ^ 如果你把它直接放在字符类开头之后” [ " ).

    语法: [ 人物 ] 哪里 是包含字符的列表。

    例子:

    var cleanString = dirtyString.replace(/[|&;$%@"<>()+,]/g, "");
    
        2
  •  97
  •   John Culviner    8 年前

    我倾向于从相反的角度看问题,这可能正是你想要的:

    这是因为有可能 lots of characters

    例如,此选项仅允许字母和数字删除无效字符组,并用hypen替换它们:

    "This¢£«±Ÿ÷could&*()\/<>be!@#$%^bad".replace(/([^a-z0-9]+)/gi, '-');
    //Result: "This-could-be-bad"
    
        3
  •  7
  •   ChaosPandion    14 年前

    任何 这些字符的一个空字符串。

    var cleanString = dirtyString.replace(/[\|&;\$%@"<>\(\)\+,]/g, "");
    
        4
  •  6
  •   Darin Dimitrov    14 年前

    [] :

    var cleanString = dirtyString.replace(/[\|&;\$%@"<>\(\)\+,]/g, "");