首頁 >後端開發 >C++ >如何限制正規表示式中的字元長度?

如何限制正規表示式中的字元長度?

DDD
DDD原創
2025-01-26 20:14:15897瀏覽

How to Limit the Length of Characters in a Regular Expression?

正規表示式字元長度限制的改良方法

您最初的正規表示式沒有對字元長度進行限制:

<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}$) 使用 $ 錨點來斷言指定數量的字元必須位於字串的末尾。
  • 此方法適用於 ECMAScript 和其他正規表示式風格,例如 Python。但是,在 Python 中,您需要使用 AZ 錨點而不是 ^$

此外,如果您的輸入字串可能包含換行符,您可以使用 [sS] 可移植的任意字元正規表示式結構:

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

這確保了換行符也包含在字元長度限制中。

以上是如何限制正規表示式中的字元長度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn