強制正規表示式中的字元長度
正規表示式通常需要長度限制。 沒有它們,正規表示式將匹配任何長度的字串。 雖然量詞看起來像是解決方案(例如 {1,15}
),但它們不能直接作用於整個字串。 這是因為量詞只影響前一個元素。
例如,此嘗試失敗:
<code class="language-javascript">var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,?()""']*${1,15}/ // Error!</code>
前瞻性解決方案
正確的方法利用積極的前瞻性斷言:
<code class="language-javascript">^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
理解前瞻性
(?=.{1,15}$)
是關鍵。 此正向前瞻性斷言整個字串(從開頭 ^
到結尾 $
)包含 1 到 15 個字元 (.{1,15}
)。 它不會消耗任何字元;它只檢查條件。 然後,正規表示式 [a-zA-Z0-9]*[^$%^&*;:,?()""']*$
的其餘部分會符合該長度約束內允許的字元。
處理換行符
如果您的字串可能包含換行符,請使用更強大的字符類別來匹配任何字符,包括換行符:
<code class="language-javascript">^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
[sS]
符合任何空白或非空白字元。 這確保了即使在多行輸入的情況下長度檢查也能正常工作。 這提供了一種在正規表示式中強制執行字元長度限制的可靠方法。
以上是如何在正則表達式中執行字符長度限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!