Javascript “;联合收割机&x201D;2带有逻辑或的正则表达式?

Javascript “;联合收割机&x201D;2带有逻辑或的正则表达式?,javascript,regex,logic,Javascript,Regex,Logic,我有两种javascript模式: /^[A-z0-9]{10}$/-长度正好为10个字母数字符号的字符串 及 /^\d+$/-长度至少为一的任意数字 如何生成10或任意数字的表达式或字符串 var模式=/^([A-z0-9]{10})|(\d+)$/ 因为某种原因,它不起作用。它至少会过去 pattern.test("123kjhkjhkj33f"); // true 对于A-z0-9字符串,它不是数字,长度也不是10。请注意,您的^([A-z0-9]{10})|(\d+)$模式匹配字

我有两种javascript模式:

/^[A-z0-9]{10}$/
-长度正好为10个字母数字符号的字符串

/^\d+$/
-长度至少为一的任意数字

如何生成10或任意数字的表达式或字符串

var模式=/^([A-z0-9]{10})|(\d+)$/

因为某种原因,它不起作用。它至少会过去

pattern.test("123kjhkjhkj33f");  // true  
对于
A-z0-9
字符串,它不是数字,长度也不是10。

请注意,您的
^([A-z0-9]{10})|(\d+)$
模式匹配字符串开头的
A-z0-9
范围中的10个字符(
^
仅修改
([A-z0-9]{10})
部分(第一个备选分支),或(
)带
(\d+)$
$
仅修改
(\d+)
分支模式)的字符串末尾的一个或多个数字

还要注意,
A-z
是一个打字错误

您需要按如下方式修复它:

var pattern = /^(?:[A-Za-z0-9]{10}|\d+)$/;
或使用
i
修饰符:

var pattern = /^(?:[a-z0-9]{10}|\d+)$/i;

请注意,这里的分组很重要:
(?:…|…)
使锚点适当地应用于每个锚点

详细信息

  • ^
    -字符串的开头
  • (?:
    -非捕获替代组:
    • [A-Za-z0-9]{10}
      -10个字母数字字符
    • |
      -或
    • \d+
      -1个或多个数字
  • -分组构造结束
  • $
    -字符串结尾