【问题标题】:JS XRegExp Replace all non charactersJS XRegExp 替换所有非字符
【发布时间】:2013-09-22 09:20:56
【问题描述】:

我的目标是替换字符串中任何语言中不是破折号 (-) 或不是数字或不是字母的所有字符。所有 #!()[] 以及所有其他符号都替换为空字符串.所有出现的 - 也不应该被替换。 我已经为此使用了XRegExp 插件,但似乎我找不到神奇的解决方案:) 我试过这样:

var txt = "Ad СТИНГ (ALI) - Englishmen In New York";
var regex = new XRegExp('\\p{^N}\\p{^L}',"g");
var b = XRegExp.replace(txt, regex, "")

但结果是:AСТИН(AL EnglishmeINeYork ...这有点奇怪

如果我尝试添加不删除“-”字符的条件会导致 RegEx 无效。

【问题讨论】:

    标签: javascript regex unicode replace xregexp


    【解决方案1】:

    \\p{^N}\\p{^L} 表示非数字后跟非字母。

    试试[^\\p{N}\\p{L}-],它表示非数字、非字母、非破折号。

    jsfiddle 在哪里做一些测试...第三个XRegExp 是你问的那个。

    【讨论】:

    • [\p{^N}\p{^L}] 匹配任何不是数字不是字母的东西——除非有一个字符既是字母又是 一个数字就是一切!
    • @bobince Note that the union of non-number and non-letters is probably the whole Unicode
    • 我在您的示例中看到测试 1 将所有字母保持不变并替换空格和数字。为什么当您添加 {N} 时所有字母也会被替换?我想做的就是替换不是破折号的字符,不是数字或任何语言的字母。
    【解决方案2】:
    \p{^N}\p{^L}
    

    是一个非数字,后跟一个非字母。您可能想说一个既不是字母也不是数字的字符:

    [^\p{N}\p{L}]
    

    【讨论】:

      【解决方案3】:
      // all non letters/numbers in a string => /[^a-zA-z0-9]/g
      

      我不知道 XRegExp。

      但在 js Regexp 中,您可以将其替换为

      b.replace(/[^a-zA-z0-9]/g,'')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-23
        • 2015-06-06
        • 1970-01-01
        • 2010-12-20
        • 2012-10-10
        • 2010-12-01
        • 2020-05-09
        相关资源
        最近更新 更多