【问题标题】:RegEx for passing all chars except a list of chars用于传递除字符列表之外的所有字符的正则表达式
【发布时间】:2019-05-19 18:16:57
【问题描述】:

我想要一个包含除英语和波斯数字之外的所有字符的模式。我找到了这种模式,但我的问题是我该如何反对这种模式。

例如包含 * 和 / 和 ... 但不包含 1 2 3 1 2 3。

此模式获取所有数字:

^[\u0600-\u06FF\s0-9]+$

【问题讨论】:

  • 我认为,如果我正确阅读并理解了您的问题,您需要:^[^\u0600-\u06FF\s0-9]+$(注意添加到字符组中的 ^ 字符,以指定“NOT” )。
  • @DavidThomas ot 可以工作,但仍然不能像波斯语中的字母那样得到所有字符

标签: javascript regex


【解决方案1】:

这应该可行

/[^\d۱۲۳۴۵۶۷۸۹]/g

Demo

注意:如果我忘记了一些波斯数字,只需将其添加到 ]

【讨论】:

    【解决方案2】:

    我们可以通过在 char 列表中添加我们不需要的 unicodes 来解决这个问题,然后滑动其他所有内容,我不确定 space 是否不受欢迎。

    也许,这样的修改会起作用:

    ([\s\S].*?)([\x{0600}-\x{06FF}0-9]+)?
    

    演示

    对于 JavaScript,我们只需将 x 替换为 u:

    const regex = /([\s\S].*?)([\u{0600}-\u{06FF}0-9]+)?/gmu;
    const str = `everthing we wish to have before 1 2 3 ۱ ۲ ۳ and everything else we wish to have`;
    const subst = `$1`;
    
    // The substituted value will be contained in the result variable
    const result = str.replace(regex, subst);
    
    console.log('Substitution result: ', result);

    正则表达式

    如果这不是您想要的表达方式,您可以在regex101.com 中修改/更改您的表达方式。

    【讨论】:

      【解决方案3】:

      这不是Ascii,也不是波斯数字

      [^0-9\u06F0-\u06F9]+

      【讨论】:

      • @sin 谢谢你它的工作,好的,但我有一个小问题。这个正则表达式包含所有字符,但它不包含波斯语连续的一些 unicode,如 رگا
      • @sinak - 所以啊,一个小时后,Pablo 不仅复制了我的确切正则表达式,而且你接受了它作为答案。 regex101.com/r/pGp89H/1回答你的问题this regex contains all char but it doesnt contain some unicode in persian consecutive like رگا 确实匹配这些字符,所以我不确定你在说什么。 \u0627 ا ARABIC LETTER ALEF \u0631 ر ARABIC LETTER REH \u06AF گ ARABIC LETTER GAFregex101.com/r/HZkY4m/1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 2014-04-01
      • 2014-03-22
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      相关资源
      最近更新 更多