正則表達式中這句話是什麼意思/^([a-z]|[A-Z])[\w_]{5,19}$/

題目:

正則表達式中這句話是什麼意思/^([a-z]|[A-Z])[\w_]{5,19}$/

解答:

表示以匹配字母開頭(不區分大小寫),隨後字符以字母、數字、下劃線組成,長度 6 到 20 位.
[a-z] 表示匹配 26 個小寫字母中的任意一個
[A-Z] 表示匹配 26 個大寫字母中的任意一個
| 豎線(準確點:管道符)表示「或」的意思
([a-z]|[A-Z])即 26 個大小寫字符中任意一個
\w 爲正則中的轉義字符,表示匹配字母、數字、下劃線
_ 字符,沒有任何意義就是匹配下劃線(多餘的,因爲 \w 已經包含了下劃線)
{5,19} 表示前面的字符(即:[\w_])必須至少出現 5 次最多出現 19 次.
^ ...(略)...$ 此處的 ^ 和 $ 爲匹配限定符,表示必須匹配全部文本(即:從頭配到尾).
/...(略).../ 在 JavaScript 正則表達式用 / 號標註(僅 JS 支持),相當於字符串要用引號一樣.
PS:^ 符號表示必須從文本開始處匹配,$ 表示必須匹配到文本結束爲止.如果不加這個符號,可能只會匹配部分文本,而非全部文本.
例子如下:
文本:「baaab」
正則1:a+ (表示匹配一個或多個 a 字符)
正則2:^a+$ (同上,但多了限定符)
用正則1匹配測試成功,因爲中間的 aaa 符合要求
用正則2匹配測試失敗,因爲有 ^ $ 限制,必須文本開始處一直匹配到結束.
這個正則表達式寫的很羅嗦,我修改後的:/^[a-zA-z]\w{5,19}$/
注1:([a-z]|[A-Z]) 原作者意思匹配大小寫字母,沒必要用到捕獲組(即:括號),完全可以這樣寫:[a-zA-Z]
注2:[\w_] 原作者意思匹配字母、數字、下劃線,其實 \w 就是:字母、數字、下劃線,沒必要再單獨指定下劃線了,因爲就一個 \w 所以 [] 括號也不需要了.

添加新評論

暱稱
郵箱
網站