[英]Regular Expression to validate multiple condition
我需要使用具有多个条件的javascript验证字符串。 我不知道如何使用正则表达式来做到这一点。
我需要检查字符串是否包含以下任何条件
条件1 :以18XX或1-8XX或8XX开头的任何长度的字符串,其中X是0到9之间的任何数字(0和9都包括在内)。 例如:1800abc,812abc-def,1-805-999-9999
条件2 :以NXX或1NXX或1-NXX开头的字符串后跟正好七个不包括连字符的数字,其中N是2到9之间的任意数字(包括2和9),X是0到9之间的任意数字( 0和9都包括在内)。 例如:12-999-9999,19009998888,1-212 --- 1-2-3-4-5-6-7--
条件3 :以XXXXX开头的字符串,其中X是0到9之间的任何数字(0和9都包括在内)。 例:20176,90210-Melrose
你不可能有一个正则表达式匹配这一切,
呃可能你可以! 见下文
尝试将这三个用于每个条件,检查所有三个条件并仅传递那些不匹配的条件。
条件1: ^1?-?8\\d{2}.*$
条件2: 首先删除所有超量然后匹配^1?[2-9]\\d{7}$
条件3: ^\\d{5}.*$
希望这可以帮助
编辑
您可能只有一个可以匹配的正则表达式。 因为-
似乎是一个可选字符,我们先删除它们,但正如@nnnnn在注释中指出的那样,首先要检查字符串是否实际上以 -
如果是,那么字符串通过验证而不进一步检查。 那么你可以串这三个连同|
形成一个你可以检查的正则表达式
^1?8\\d{2}.*|1?[2-9]\\d{7}|\\d{5}.*
我删除了-?
从第一部分开始,因为我们已经删除了所有的大肆宣传。
您可能正在寻找替代方案: http : //www.regular-expressions.info/alternation.html
要匹配数字,您可以使用数字class \\d
或仅使用plain [0-9]
。
例如,对于条件1,您可以尝试将其与以下项匹配:
/^18\d\d|1-8\d\d|8\d\d$/.test("1800") == true
/^18\d\d|1-8\d\d|8\d\d$/.test("1-800") == true
/^18\d\d|1-8\d\d|8\d\d$/.test("812") == true
/^(1-?)?8\d\d$/.test("1-800") == true
您可以使用RegexPal等工具来试验正则表达式。 我通常只是在Chrome开发者工具控制台中使用它。
试着自己弄清楚其余部分。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.