regex - 正则表达式匹配数字和字母或仅数字
问题描述
我一直在尝试编写与这些条件匹配的正则表达式:
- 超过 9 位的字符串
- 超过 9 个数字和字母的字符串
我不知道如何写我的正则表达式对它说:数字或数字和字母可以匹配,但不能匹配字母。
这些字符串应该匹配:
- 12345678987654567
- jhsjd4567hsqdgqsgh456786576567kj
- 9l8j9n9k0n9n8n
这些字符串不应匹配:
- 洛雷米普苏姆
- a1
- 12567
到目前为止我的正则表达式:/(?:\w){9,}/
非常感谢 :)
解决方案
我将您的要求解释为:匹配一个超过九个字符的字符串,该字符串仅包含数字或仅包含数字和字母。
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
如果您只想匹配小写字母,请删除该标志。