javascript - 如何验证在特定条件下必须存在的字符

标签 javascript regex

所以我有这个正则表达式:

(([aA-zZ]{2}[0-9]{5})(\w{2})?((XX)|(xx))?(\;)?)*

基本上它验证了这些例子:

zz01104;ZZ02045PA;
zz00110;AH12204
AG01104xx
EV99337xx;

它按预期工作,问题是这个:

zz00110AH12204;

这两者之间应该有一个;,但我不知道如何直接使用正则表达式来控制它。

最佳答案

你应该使用

/^[a-zA-Z]{2}[0-9]{5}(?:\w{2})?(?:XX|xx)?(?:;[a-zA-Z]{2}[0-9]{5}(?:\w{2})?(?:XX|xx)?)*;?$/

请参阅regex demo .

在 JS 中,您可以动态构建模式以避免重复编写正则表达式部分:

var rxPart = "[a-zA-Z]{2}[0-9]{5}(?:\\w{2})?(?:XX|xx)?";
var rx = new RegExp("^" + rxPart + "(?:;" + rxPart + ")*;?$");
var strs = [ 'zz01104;ZZ02045PA', 'zz00110;AH12204', 'AG01104xx', 'EV99337xx', 'zz00110AH12204'];
for (var s of strs) {
  console.log(s, "=>", rx.test(s));
}

可以看到模式结构是

  • ^ - 字符串的开头
  • rxPart - 您的单项模式
  • (?: - 非捕获组的开始
    • ; - 分号
    • rxPart - 您的单项模式
  • )* - 组中模式序列出现任意 0 次或多次
  • ;? - 可选的 ;
  • $ - 字符串结尾。

关于javascript - 如何验证在特定条件下必须存在的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49028996/

相关文章:

javascript - 表单不响应移动布局中的点击

c++ regex - 除了字符序列之外的一切?

regex - Visual Studio 代码 : How to automate a simple regex-find and replace?

javascript - 使用VBA执行javascript函数

javascript - 中值 JS 函数。错误的

javascript - 获取状态 4​​00 - {"error":"invalid_grant"} 验证时

php - 将字符串传递到 PHP 中的 Javascript 函数中 - 如何正确转义?

mysql - REGEXP 就这就是原因或者这就是原因

没有第一个字符的Android linkify

php - 使用 WordPress 中的变量批量编辑已发布的帖子