改进Regex以匹配有效值

时间:2014-11-29 23:03:43

标签: javascript regex pcre

我需要一些帮助来构建这三个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}$

    输入(有效值模式):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版本可以工作,但也允许无效模式

我可以在这里得到一些帮助吗?

1 个答案:

答案 0 :(得分: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