【问题标题】:Improve Regex for match valid values改进正则表达式以匹配有效值
【发布时间】:2014-11-29 23:03:42
【问题描述】:

我需要一些帮助来构建这三个 RegEx,因为我遗漏了一些东西并且某些值不匹配。

  • 第一个test here]: ^(?:(?:00|\+)58|0)(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789]))\d{7}$

    输入(有效值模式):02121234567、+582121234567、2121234567、(212)123.41.25、(212)-123.41.25 输入(无效值模式):(9212)123.41.25, (21200)-123.41.25

    在这种情况下,我制作的 RegEx 版本适用于以下模式:02121234567、+582121234567 但不适用于其他模式

    • 第二个test here]: ^(?:(?:00|\+)58)(?:4(?:1[246]|2[46]))\d{7}$

    Input (valid values pattern): 04241234567, +584241234567, 4241234567, (424)123.41.25, 04141234567, +584141234567, 4141234567, (414)123.41.25, 04121234567, +584121234567, 4121234567, (412)123.41. 25 输入(无效值模式):(123)123.41.25, (4246)123.41.25

    在这种情况下,我制作的 RegEx 版本适用于以下模式:+584241234567 但不适用于其他模式

    • 第三: ^\+?(?:\(\d{1,4}\)|\d{1,4})?\s*[\d\s.]{6,14}$

    输入(有效值模式):+584242511330, 00584242511330, 4242511330, (424)251.13.30 输入(无效值模式):123 456 213、+12 345 678、+48 315 182 12 63、(4567)8457435

    在这种情况下,我制作的 RegEx 构建工作但也允许无效模式

我可以在这里寻求帮助吗?

【问题讨论】:

  • 您能否提供更多有关您尝试匹配的信息类型的背景信息?非常不清楚您要做什么。
  • 这确实需要更多细节才能真正对您有所帮助。比如,第一批“(212)123.41.25”有效,“(9212)123.41.25”无效的标准是什么?
  • @QuantumLicht 这些是委内瑞拉的“种类”有效电话号码,区号为 3 个整数 (212) 后跟电话号码 1234125,我提供了一组匹配的字符串,你不清楚什么?

标签: javascript regex pcre


【解决方案1】:

从第一个开始:

^(?:(?:(?:00|\+)58|0)?(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789]))\d{7})|(?:\(212\)-?\d{3}\.\d{2}\.\d{2})$

RegEx101

……第二个:

^(?:(?:(?:00|\+)58)(?:4(?:1[246]|2[46]))\d{7})|(?:0?\d{10})|(?:\(4(?:[12]4|12)\)\d{3}\.\d{2}\.\d{2})$

RegEx101

对于最后一个,需要更多输入,如何区分有效值和无效值。
RegEx101

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    相关资源
    最近更新 更多