簡體   English   中英

正則表達式驗證多個條件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM