正規表示式字元長度限制的改良方法
您最初的正規表示式沒有對字元長度進行限制:
<code>var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()\""\']*$/</code>
為了限製字元長度為15,您嘗試修改表達式為:
<code>var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()\""\']*${1,15}/</code>
但這會報錯,因為量詞不能直接應用在錨點上。 正確的限制輸入字串長度的方法是使用開頭位置的先行斷言:
<code>^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()\"']*$</code>
這個先行斷言確保輸入字串匹配指定的字元範圍,並且長度在1到15個字元之間,從而有效地實現了字元長度限制。
與在末尾使用限制性量詞(如{1,15})相比,先行斷言方法允許您限制整個輸入字串的長度。量詞應用於先行斷言的子模式,確保它從字串開頭匹配所需數量的字元。
以下是其他需要注意的幾點:
[a-zA-Z0-9]*
子模式符合任意長度的字母或數字序列。它等同於您原始表達式中使用的 (a-z|A-Z|0-9)*
子模式。 (?=.{1,15}$)
使用 $
錨點來斷言指定數量的字元必須位於字串的末尾。 A
和 Z
錨點而不是 ^
和 $
。 此外,如果您的輸入字串可能包含換行符,您可以使用 [sS]
可移植的任意字元正規表示式結構:
<code>^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()\"']*$</code>
這確保了換行符也包含在字元長度限制中。
以上是如何限制正規表示式中的字元長度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!