【问题标题】:several regex queries几个正则表达式查询
【发布时间】:2017-02-09 12:59:52
【问题描述】:

我需要一些帮助来编写正则表达式。

这是我的第一个正则表达式(匹配英语或希伯来字符):

/^(?:[\u0590-\u05FF\uFB1D-\uFB40]+|[\w]+)$/i

这应该匹配:abc, אבג 这不应该匹配:a,b,aא

它工作正常,我只需要添加超过 1 个字符的限制。

下一个应该和上一个完全一样(包括超过1个字符 限制)但也允许空格。 这应该匹配:abcx,abcx ascx,דגהק,שגדדשגב 这不应该匹配:a,b,asaceדגעההת,ascasv אקיכרעקכ

最后一个 Regex 表达式应该是所有数字,正好包含 10 个数字 并从数字 05 开始。 这应该是匹配的:0528547114 这不应该匹配:数字、特殊字符、小于或大于 10 位数。 我正在使用 JS 和 C# 正则表达式。 任何帮助将不胜感激。

【问题讨论】:

  • 请举例说明应该匹配和不应该匹配的内容。您还使用哪种正则表达式变体?
  • 阅读How to Ask。创建一个minimal reproducible example
  • 我编辑了我的问题,希望现在更清楚了。

标签: javascript c# regex


【解决方案1】:

要匹配超过 1 个字符,请使用量词 {2,} 而不是 +

/^(?:[\u0590-\u05FF\uFB1D-\uFB40]{2,}|[\w]{2,})$/i

要匹配空格,请将其添加到字符类中:

/^(?:[\u0590-\u05FF\uFB1D-\uFB40 ]{2,}|[\w ]{2,})$/i

匹配 10 位数字:

/^(?:[\u0590-\u05FF\uFB1D-\uFB40 ]{2,}|[\w ]{2,}|05\d{8})$/i

匹配由一个空格分隔的多个单词:

/^(?:[\u0590-\u05FF\uFB1D-\uFB40]{2,}(?: [\u0590-\u05FF\uFB1D-\uFB40]{2,})*|\w{2,}(?: \w{2,})*|05\d{8})$/i

【讨论】:

  • 谢谢,前两个正是我需要的,但最后一个不是 - 我需要它只有 numbers(0-9) ,正好有 10 个数字和前 2 个数字为 05。类似于:053256899。我想我明白了:^05+\d{8}$
  • @Jonny:只需将\d{10} 更改为05\d{8},查看我的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 2021-08-18
  • 2017-10-10
  • 2020-10-26
相关资源
最近更新 更多