更新時間:2021-08-12 12:57:59 來源:動力節點 瀏覽930次
您可以使用正則表達式來匹配和驗證用戶在 cfinput 和 cftextinput 標簽中輸入的文本。普通字符與特殊字符組合以定義匹配模式。只有當用戶輸入與模式匹配時,驗證才會成功。
正則表達式讓您可以檢查輸入文本的各種自定義條件,輸入必須遵循特定模式。您可以將簡單的正則表達式連接到復雜的搜索條件中,以針對復雜的模式進行驗證,例如具有不同結尾的幾個單詞中的任何一個。
您可以在正則表達式中使用 ColdFusion 變量和函數。ColdFusion 服務器在計算正則表達式之前先計算變量和函數。例如,您可以根據從其他輸入數據或數據庫值動態生成的值進行驗證。
注意:此處列出的規則適用于 JavaScript 正則表達式,僅適用于 incfinput 和 cftextinputtags 中使用的正則表達式。這些規則不同于 ColdFusion 函數 REFind、REReplace、REFindNoCase 和 REReplaceNoCase 使用的規則。有關 ColdFusion 函數中使用的正則表達式的信息,請參閱 在函數中使用正則表達式。
因為特殊字符是正則表達式中的運算符,要將特殊字符表示為普通字符,請在它前面加上反斜杠進行轉義。例如,使用兩個反斜杠字符 (\\) 表示一個反斜杠字符。
以下規則管理匹配單個字符的正則表達式:
特殊字符是:+ * ? . [ ^ $ ( ) { | \
如果任何字符不是特殊字符或前面的反斜杠 (\) 對字符進行轉義,則任何字符都與其自身匹配。
后跟任何特殊字符的反斜杠 (\) 與文字字符本身匹配;也就是說,反斜杠轉義了特殊字符。
句點 (.) 匹配除換行符以外的任何字符。
括在方括號 ([]) 中的一組字符是一個單字符正則表達式,匹配該組中的任何字符。例如,“[akm]”匹配 a、 k或 m。如果在方括號中包含 ](右方括號),它必須是第一個字符。否則,它不起作用,即使您使用\]。
破折號可以表示一個字符范圍。例如,[az] 匹配任何小寫字母。
如果括號中的一組字符的第一個字符是脫字符號 (^),則表達式匹配該組中除這些字符之外的任何字符。它與空字符串不匹配。例如:“[^akm]” 匹配除a、 k或 m之外的任何字符 。如果插入符號不是集合的第一個字符,它就會失去它的特殊含義。
您可以通過用字符集替換單個字符來使正則表達式不區分大小寫;例如,“[Nn][Ii][Cc][Kk]”是名稱 Nick(或 NICK,或 nick,甚至 nIcK)的不區分大小寫的模式。
您可以使用以下轉義序列來匹配特定字符或字符類:
轉義序列 | 火柴 | 轉義序列 | 意義 | |
---|---|---|---|---|
[\b] | 退格。 | \s | 以下任何空白字符:空格、制表符、換頁和換行。 | |
\b | 單詞邊界,例如空格。 | \S | 除 \s 匹配的空白字符之外的任何字符。 | |
\B | 非詞邊界。 | \t | 標簽。 | |
\cX | 控制字符 Ctrl-x。例如,\cv 匹配 Ctrl-v,這是粘貼文本的常用控制字符。 | \v | 垂直選項卡。 | |
\d | 一個數字字符 [0-9]。 | \w | 一個字母數字字符或下劃線。相當于 [A-Za-z0-9_]。 | |
\D | 除數字外的任何字符。 | \W | \w 不匹配的任何字符。相當于 [^A-Za-z0-9_]。 | |
\F | 表單饋送。 | \n | 對括號中第 n 個表達式的反向引用。 | |
\n | 換行。 |
|
ASII 字符表中由指定的八進制數表示的字符。 | |
\r | 回車。 | \\x十六進制 | ASCII 字符表中由指定的十六進制數表示的字符。 |
使用以下規則構建多字符正則表達式:
括號將正則表達式的各個部分組合成一個子表達式,該子表達式可以被視為一個單元。例如,“(HA)+”匹配的一個或多個實例 公頃。
單字符正則表達式或后跟星號 (*) 的分組子表達式匹配零次或多次出現的正則表達式。例如,“[az]*”匹配零個或多個小寫字符。
一個字符的正則表達式或后跟加號 (+) 的分組子表達式匹配一個或多個正則表達式。例如,“[az]+”匹配一個或多個小寫字符。
一個字符的正則表達式或后跟問號 (?) 的分組子表達式匹配該正則表達式的零次或一次出現。例如,“xy?z”匹配 xyz 或 xz。
正則表達式開頭的克拉 (^) 匹配字段的開頭。
正則表達式末尾的美元符號 ($) 與字段的末尾匹配。
正則表達式的串聯會創建一個與相應的字符串串聯相匹配的正則表達式。例如,“[AZ][az]*”匹配任何大寫的單詞。
OR 字符 (|) 允許在兩個正則表達式之間進行選擇。例如,“jell(y|ies)”匹配 果凍 或 果凍。
大括號 ({}) 表示正則表達式出現的范圍。您可以以“{m, n}”的形式使用它們,其中 m 是一個等于或大于零的正整數,表示范圍的開始,而 n 等于或大于 m,表示范圍的結束。例如,“(ba){0,3}”最多匹配三對表達式 ba。形式“{m,}”要求 前面的正則表達式至少 出現m次。形式“{m}”要求 前面的正則表達式恰好 出現m次。不允許使用“{,n}”形式。
反向引用使您可以匹配先前匹配的括號組中的文本。后跟數字 n (\n) 的斜杠指的是第 n個帶括號的子表達式。
如何使用反向引用的一個例子是搜索雙字;例如,在文本中查找“the the”或“is is”的實例。以下示例顯示了正則表達式中的反向引用:
(\b[A-Za-z]+)[ ]+\1
此代碼匹配包含重復兩次的單詞的文本;也就是說,它匹配一個單詞(由\b 單詞邊界特殊字符和“[A-Za-z]+”指定)后跟一個或多個空格(由“[ ]+”指定),然后是第一個匹配的子表達式,括號中的第一個單詞。例如,它會匹配“is is”,但不會匹配“This is”。
ColdFusion 驗證通常認為一個值是有效的,如果其中任何一個與正則表達式模式匹配。如果要確保整個條目與模式匹配,請將其“錨定”到字段的開頭和結尾,如下所示:
如果插入符號 (^) 位于模式的開頭,則該字段必須以與該模式匹配的字符串開頭。
如果美元符號 ($) 位于模式的末尾,則該字段必須以與該模式匹配的字符串結尾。
如果表達式以插入符號開頭并以美元符號結尾,則該字段必須與模式完全匹配。
以上就是動力節點小編介紹的"使用正則表達式驗證表單數據",希望對大家有幫助,想了解更多可查看Java在線學習。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習