栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

您不能将量词应用于锚点。相反, 要限制输入字符串的长度,请 在开头使用锚定先行:

^(?=.{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}$
将“限制”的2子模式无限长度的序列(作为
*
(和
+
,也行)可以字符的无限数量的匹配),以1〜15倍,我们仍然不限制的长度
整个输入串

前瞻限制如何工作?

(?=.{1,15}$)
正向前查找 出现后立即
^
启动的字符串锚。这是一个 零宽度的断言
,仅在检查其子模式是否与后续字符匹配后才返回true或false。因此,此超前尝试会尝试匹配任何1到15个字符(由于[
限制量词,但要匹配字符串末尾的换行符(由于
$
锚点)。如果我们
$
从前瞻中删除锚,则前瞻仅需要字符串包含1到15个字符,但是总字符串长度可以是任意长度。

如果输入字符串可以包含换行符序列,则应使用

[sS]
可移植的任何字符正则表达式构造(它将在JS和其他常见的regex风格中使用):

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596775.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号