我想用正则表达式检查以下内容:
- 字符串是否包含数字
- 字符串不包含特殊字符(!<>?= + @ {} _ $%)
^ [^!<>?=+@{}_$%]+$
我应该如何编辑这个正则表达式以检查字符串中是否有数字(它必须包含数字)?
^ [^!<>?=+@{}_$%]+$
我应该如何编辑这个正则表达式以检查字符串中是否有数字(它必须包含数字)?
您可以在正则表达式中添加[0-9]+
或\d+
,如下所示:
^[^!<>?=+@{}_$%]*[0-9]+[^!<>?=+@{}_$%]*$
或
^[^!<>?=+@{}_$%]*\d+[^!<>?=+@{}_$%]*$
[0-9]
和\d
的区别请参见这里
\d
与[0-9]
完全等效。 - user663031\d
可以包括 Unicode 字符。 - Tim Biegeleisen只需查看数字:
var re = /^(?=.*\d)[^!<>?=+@{}_$%]+$/;
console.log(re.test('bob'));
console.log(re.test('bob1'));
console.log(re.test('bob#'))
(?=.*\d)
部分是查找输入中某个位置的单个数字。
你只需要添加数字检查,是吗?可以这样做:
/^(?=.*\d)[^!<>?=+@{}_$%]+$/
我们进行前瞻性检查(就像在不移动字符串位置的情况下查看后面的字符),以检查字符串中是否至少有一个数字。 然后,我们按照正常方式检查字符串中是否没有这些符号,并随着我们的检查逐步移动字符串。
请注意:如果您想匹配换行符(又称换行符),则可以将点.
更改为 [\ W \ w]
。 这将匹配任何字符。 您可以用多种方式做到这一点,但它们几乎都很笨拙,所以由您决定。