为了账号安全,请及时绑定邮箱和手机立即绑定

在正则表达式中限制字符长度

/ 猿问

在正则表达式中限制字符长度

芜湖不芜 2019-07-09 16:06:20

在正则表达式中限制字符长度

我使用以下正则表达式而不限制任何字符长度

var test =  /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()\""\']*$/ //Works Fine

在上面,当我试图将字符长度限制为15时,它会抛出一个错误。

var test =  /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()\""\']*${1,15}/    //**Uncaught SyntaxError: Invalid regular expression**

请帮助我使上述的regEx与字符限制为15工作。


查看完整描述

4 回答

?
慕圣4463555

/^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()\""\']{1,15}$/  写成这样就会生效了,你会报错是因为你是在 $  终止符之后, 且 不能再使用 * ,这是表示不限制个数

 

查看完整回答
反对 2020-03-05
?
绝地无双

不能将量词应用于锚点。相反,限制输入字符串的长度,使用锚定在开头的前瞻性:

^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()\"']*$  ^^^^^^^^^^^

另外,我假设您希望将0或多个字母或数字与(a-z|A-Z|0-9)*..它应该看起来像[a-zA-Z0-9]*(即在这里使用字符类)。

为什么不使用限制量词,比如{1,15}最后?

量词只应用于左边的子模式,无论是组或字符类,还是文字符号。因此,^[a-zA-Z0-9]*[^$%^&*;:,<>?()\"']{1,15}$将有效限制第二个字符类的长度。[^$%^&*;:,<>?()\"']到1到15个字符。这个^(?:[a-zA-Z0-9]*[^$%^&*;:,<>?()\"']*){1,15}$是否会“限制”无限长度的两个子模式的序列(如*(和+)可以匹配无限数量的字符)1至15次,而且我们仍然不限制全输入串.

放眼限制是如何工作的?

这个(?=.{1,15}$) 正前瞻就在^开始字符串..这是一个零宽度断言只在检查其子模式是否与后续字符匹配之后才返回true或false。因此,此前瞻性尝试匹配任意1至15(由于限位量词 {1,15})字符,但是字符串末尾的换行符(由于$锚)。如果我们移除$从查找开始定位,查找将只需要字符串到1到15个字符,但总字符串长度可以是任意的。

如果输入字符串可以包含换行符序列,则应使用[\s\S]可移植的任意字符regex构造(它将在JS和其他常见正则表达式中工作):

^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()\"']*$ ^^^^^^^^^^^^^^^^^


查看完整回答
反对 2019-07-09
?
慕桂英4014372

不太确定你需要这个regex。它将匹配0或多个字母或数字,然后匹配0或多个字符,而不是匹配$%^&*;:,<>?()"'准备好了。请说明哪些字符串有效(您想要匹配)和哪些字符串无效。

查看完整回答
反对 2019-07-09
?
慕虎7371278

在C#中,当尝试将regEx分配给字符串时,上面的一个将不能工作。我需要这样做吗?(?=.{1,15}$)[a-Za-Z0-9]*[^$%^&*;:,<>?()\“]*$ 

查看完整回答
反对 2019-07-09

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信