[英]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.