2012-10-29 93 views
0

我需要驗證在JavaScript中的用戶名,其中只有下面的模式可以通過:的Javascript正則表達式

  1. ABC-DE-0001
  2. XEG-SS-21626
  3. FK1S-DAD-51345

礦山目前使用^[A-Z]{3}[\- ]?[A-Z]{2}[\- ]?[0-9]{4}$

是否有任何改進來驗證一個字符串中的所有上述模式?

var v = document.getElementById('<%=txtCode.ClientID%>').value; 
var patternForID = /^[A-Z]{3}[\- ]?[A-Z]{2}[\- ]?[0-9]{4}$/; 
if (patternForID.test(v) == '') { 
    sender.innerHTML = "Please enter Valid Remeasurement Code"; 
    args.IsValid = false; // field is empty 
} 
+0

你的第三個例子不會通過。 – Blender

+0

第二個例子也不會通過。 –

+0

白色空間是一個有效的分隔符來替換連字符還是隻是在正則表達式中額外的混亂? –

回答

1

下面的正則表達式匹配所有你的三個例子:

^([A-Z]{3}|[A-Z0-9]{4})-[A-Z]{2,3}-[0-9]{4,5}$ 

這很難說,你的要求是從這些例子什麼,但在這裏就是上述比賽的正則表達式。

([A-Z]{3}|[A-Z0-9]{4}) - 三個大寫字母或大寫字母和數字之間的4個字符的任意組合。

[A-Z]{2,3} - 兩個或三個大寫字母。

[0-9]{4,5} - 四位或五位數字。

我認爲-是您唯一合法的分隔符,所以我在正則表達式中將其作爲-。如果您的分隔符確實可以是空格或-,請將其更改回[- ]。此外,在分隔符後添加?使其成爲可選項,這似乎不適合您的示例。自然,如果分隔符是可選的,則需要將其放回原處。

看到它的工作在RegexPal與你的例子。

+0

非常感謝Bill! –