0

我需要在 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
}
4

1 回答 1

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}- 四位或五位数字。

我认为这-是您唯一的合法分隔符,所以我-在正则表达式中将其设为文字。如果您的分隔符真的可以是空格或a -,请将其改回[- ]。此外,?在分隔符后添加 a 使其可选,这似乎不适合您的示例。当然,如果分隔符是可选的,您需要将其放回原处。

使用您的示例查看它在RegexPal中的工作。

于 2012-10-29T02:48:38.223 回答