我希望我的正则表达式允许字母数字字符,"/_-"和中间的空格,但它必须始终至少有一个字母数字字符。
我的验证是这样的,
/^([A-Za-z0-9/-]+[A-Za-z0-9/-\s]*[A-Za-z0-9/_-]+($/
它应该接受 **ABC_1-2-3,但不能单独允许 123 或 -_/
有人可以帮我吗?
下面给出的正则表达式将捕获带有字母数字字符的字符串,其中包含可选的空格、连字符和下划线。试试吧。
([*A-Za-z]+(s+)?([d-_]+)?)
您的正则表达式几乎是正确的,您需要在开头添加 2 个正面前瞻,以要求至少 1 个字母和至少 1 位数字:
/^(?=.*[a-z])(?=.*d)[a-z0-9/_-][a-z0-9/_s-]*[a-z0-9/_-]$/i
请参阅正则表达式演示(在演示中,由于演示是多行的,因此s
被替换为空格(。
详情:
^
- 字符串的开头(?=.*[a-z])
- 在除换行符字符以外的任何 0+ 字符之后,必须至少有 1 个字母(将.*
替换为[^a-z]*
以获得更好的性能((?=.*d) - after any 0+ chars other than line break chars, there must be at least 1 digit (replace
.with
\D' 以获得更好的性能([a-z0-9/_-]
- 字母、数字、/
、_
或-
[a-z0-9/_s-]*
- 0+ 字母、数字、/
、空格、_
或-
[a-z0-9/_-]
- 字母、数字、/
、_
或-
$
- 字符串结尾。
i
修饰符使模式不区分大小写。