在正则表达式中执行字符长度
>正则表达式通常需要长度限制。 没有它们,正则将匹配任何长度的字符串。 虽然量化器似乎是解决方案(例如,{1,15}
),但它们无法直接在整个字符串上工作。 这是因为量词仅影响紧随其后的元素。
<code class="language-javascript">var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,?()""']*${1,15}/ // Error!</code>
lookahead解决方案
正确的方法利用了积极的lookahead断言:
<code class="language-javascript">^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
是关键。 这种积极的lookahead断言,整个字符串(从开始>末尾
)包含1到15个字符之间((?=.{1,15}$)
>)。 它不会消耗任何字符;它只检查条件。 然后,正则^
的其余部分与该长度约束中的允许字符匹配。$
>
.{1,15}
处理新线[a-zA-Z0-9]*[^$%^&*;:,?()""']*$
>匹配任何空格或非空格字符。 这可以确保长度检查即使使用多行输入也可以正常工作。 这提供了一种可靠的方法,用于在正则表达式中执行字符长度限制。
>
以上是如何在正则表达式中执行字符长度限制?的详细内容。更多信息请关注PHP中文网其他相关文章!