首页 > 解决方案 > 正则表达式匹配数字和字母或仅数字

问题描述

我一直在尝试编写与这些条件匹配的正则表达式:

我不知道如何写我的正则表达式对它说:数字或数字和字母可以匹配,但不能匹配字母。

这些字符串应该匹配:

这些字符串不应匹配:

到目前为止我的正则表达式:/(?:\w){9,}/

非常感谢 :)

标签: regex

解决方案


我将您的要求解释为:匹配一个超过九个字符的字符串,该字符串仅包含数字或仅包含数字和字母。

const tests = [
  '12345678987654567',
  'jhsjd4567hsqdgqsgh456786576567kj',
  '9l8j9n9k0n9n8n',
  'loremipsum',
  'a1',
  '12567',
];

for (const t of tests) {
  console.log(t.padEnd(35) +
    /^(?=.*\d)[a-z\d]{10,}$/i.test(t)
  )
}

正向前瞻(?=.*\d)确保字符串中至少有一位数字。

i如果您只想匹配小写字母,请删除该标志。


推荐阅读