【java初学】正则表达式和敏感词汇过滤
生活随笔
收集整理的這篇文章主要介紹了
【java初学】正则表达式和敏感词汇过滤
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 正則表達式和敏感詞匯過濾
- 1. 正則表達式
- 1.1 正則表達式
- 1.2 常用正則表達式
- 1.3 使用
- 2. 敏感詞匯過濾
- 2.1 需求分析
- 2.2 生活中的代理
正則表達式和敏感詞匯過濾
1. 正則表達式
1.1 正則表達式
-
正則表達式是描述字符模式的對象。
-
正則表達式用于對字符串模式匹配及檢索替換,是對字符串執行模式匹配的強大工具。
-
語法:
- var patt=new RegExp(pattern,modifiers);
- var patt=/pattern/modifiers;
修飾符:用于執行區分大小寫和全局匹配:
| i | 執行對大小寫不敏感的匹配。 |
| g | 執行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。 |
| m | 執行多行匹配。 |
方括號:用于查找某個范圍內的字符
| [abc] | 查找方括號之間的任何字符。 |
| [^abc] | 查找任何不在方括號之間的字符。 |
| [0-9] | 查找任何從 0 至 9 的數字。 |
| [a-z] | 查找任何從小寫 a 到小寫 z 的字符。 |
| [A-Z] | 查找任何從大寫 A 到大寫 Z 的字符。 |
| [A-z] | 查找任何從大寫 A 到小寫 z 的字符。 |
| [adgk] | 查找給定集合內的任何字符。 |
| [^adgk] | 查找給定集合外的任何字符。 |
| (red|blue|green) | 查找任何指定的選項。 |
元字符(Metacharacter):是擁有特殊含義的字符:
| . | 查找單個字符,除了換行和行結束符。 |
| \w | 查找單詞字符。 |
| \W | 查找非單詞字符。 |
| \d | 查找數字。 |
| \D | 查找非數字字符。 |
| \s | 查找空白字符。 |
| \S | 查找非空白字符。 |
| \b | 匹配單詞邊界。 |
| \B | 匹配非單詞邊界。 |
| \0 | 查找 NULL 字符。 |
| \n | 查找換行符。 |
| \f | 查找換頁符。 |
| \r | 查找回車符。 |
| \t | 查找制表符。 |
| \v | 查找垂直制表符。 |
| \xxx | 查找以八進制數 xxx 規定的字符。 |
| \xdd | 查找以十六進制數 dd 規定的字符。 |
| \uxxxx | 查找以十六進制數 xxxx 規定的 Unicode 字符。 |
量詞:用于表示重復次數的含義
| n+ | 匹配任何包含至少一個 n 的字符串。例如,/a+/ 匹配 “candy” 中的 “a”,“caaaaaaandy” 中所有的 “a”。 |
| n* | 匹配任何包含零個或多個 n 的字符串。例如,/bo*/ 匹配 “A ghost booooed” 中的 “boooo”,“A bird warbled” 中的 “b”,但是不匹配 “A goat grunted”。 |
| n? | 匹配任何包含零個或一個 n 的字符串。例如,/e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。 |
| n{X} | 匹配包含 X 個 n 的序列的字符串。例如,/a{2}/ 不匹配 “candy,” 中的 “a”,但是匹配 “caandy,” 中的兩個 “a”,且匹配 “caaandy.” 中的前兩個 “a”。 |
| n{X,} | X 是一個正整數。前面的模式 n 連續出現至少 X 次時匹配。例如,/a{2,}/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy” 和 “caaaaaaandy.” 中所有的 “a”。 |
| n{X,Y} | X 和 Y 為正整數。前面的模式 n 連續出現至少 X 次,至多 Y 次時匹配。例如,/a{1,3}/ 不匹配 “cndy”,匹配 “candy,” 中的 “a”,“caandy,” 中的兩個 “a”,匹配 “caaaaaaandy” 中的前面三個 “a”。注意,當匹配 “caaaaaaandy” 時,即使原始字符串擁有更多的 “a”,匹配項也是 “aaa”。 |
| n{X} | 前面的模式 n 連續出現X 次時匹配 |
| n$ | 匹配任何結尾為 n 的字符串。 |
| ^n | 匹配任何開頭為 n 的字符串。 |
| ?=n | 匹配任何其后緊接指定字符串 n 的字符串。 |
| ?!n | 匹配任何其后沒有緊接指定字符串 n 的字符串。 |
RegExp 對象方法
| compile | 編譯正則表達式。 |
| exec | 檢索字符串中指定的值。返回找到的值,并確定其位置。 |
| test | 檢索字符串中指定的值。返回 true 或 false。 |
支持正則表達式的 String 對象的方法
| search | 檢索與正則表達式相匹配的值。 |
| match | 找到一個或多個正則表達式的匹配。 |
| replace | 替換與正則表達式匹配的子串。 |
| split | 把字符串分割為字符串數組。 |
正則表達式的使用
- test方法:搜索字符串指定的值,根據結果并返回真或假
- exec() 方法:檢索字符串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 null。
1.2 常用正則表達式
用戶名限制^[a-zA-Z]\w{5,17}$ 弱密碼限制^[a-zA-Z]\w{5,17}$ 強密碼限制^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,18}$^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$ Email限制^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 手機號/^1[3-9]\d{9}$/不會就百度最新XXXXX正則1.3 使用
var str = "18611110001"; // 正則表達式對象 var regExp = new RegExp(/^1[3-9]\d{9}$/); var b = regExp.test(str); console.log("手機號是否正確:" + b);var email = "123@123.net.cn"; regExp = new RegExp(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/); console.log("Email是否正確:" + regExp.test(email));var userName = "gh_pfsp"; regExp = new RegExp(/^[a-zA-Z]\w{5,17}$/); console.log("用戶號是否合法:" + regExp.test(userName));var password = "Liu12_4567.m"; regExp = new RegExp(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,18}$/); console.log("密碼是否合法:" + regExp.test(password));2. 敏感詞匯過濾
2.1 需求分析
數據從用戶到服務器,需要保存或者展示,這里需要對一些敏感詞匯進行過濾操作。如果說是用戶提交到服務器之后,服務器來完成對應操作。通過Servlet來完成。對于Servlet來說,功能壓力過多,且需要考慮的地方過多。過濾器可以來滿足對應的要求。過濾器需要放行數據之前,對于用戶提供的參數數據進行過濾,替換操作。用戶請求的request對象中,沒有setParameter方法。后臺獲取數據的相關方法:String getParameter()String[] getParameterValues()Map<String, String[]> getParameterMap()目標將所有相關方法的返回值進行獲取和修改,再次返回放行。代理!!!2.2 生活中的代理
代理,代購,代辦,代駕,代練好想你 總代1. 簽協議制定各種各樣的規范,【遵從】 Java中制定規范 ==> interface2. 培訓已經存在的條例條款必須學會。【繼承】Java中的繼承 ==> class3. 代理是真的廠方【假】代理對象Java中的代理類似操作過程1. 創建代理對象a. 真對象b. 要求繼承/使用的類c. 要求遵從/使用的接口2. 代理對象實現/增強方法a. 得到方法的名字b. 得到方法的參數參數增強通過【真實對象】執行對應方法,可以得到返回值或者一定的結果。返回值增強總結
以上是生活随笔為你收集整理的【java初学】正则表达式和敏感词汇过滤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java zip解压,并遍历zip中的配
- 下一篇: python怎么读取github_六行代