我需要實作只接受字母數字字符和空格的正則運算式,運算式開頭或結尾的空格除外。
' aaaa978aa' ===> fail
'aaaaaa ' ===> fail
'aaaaaaaaAAAa' ===> match
'aaaaaaa aaa' ===> match
'68776 67576' ===> match
'aAAAa756Gaaa' ===> match
uj5u.com熱心網友回復:
在不區分大小寫的模式下,我會將正則運算式撰寫如下:
^[a-z0-9](?:[a-z0-9 ]*[a-z0-9])?$
這需要一個前導字母數字字符,以及中間可選的字母或空格,也以字母數字字符結尾,至少對于長度為 2 個或更多字符的情況。
示例代碼:
var inputs = [" aaaa978aa", "aaaaaa ", "aaaaaaaaAAAa", "aaaaaaa aaa", "68776 67576", "aAAAa756Gaaa"];
inputs.forEach(x => console.log(x (/^[a-z0-9](?:[a-z0-9 ]*[a-z0-9])?$/i.test(x) ? " : match" : " : fail")));
uj5u.com熱心網友回復:
試試這個:
^\w (?:[ \t] )?\w $
^: 在行首斷言位置
\w :匹配任何單詞字符(相當于 [a-zA-Z0-9_]),一次到無限次。
(?:[ \t] )?:非捕獲組,匹配空格和制表符,?確保在 0 到 1 次之間匹配上一個標記。
$: 在行尾斷言位置
https://regex101.com/r/sMcYuq/1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479797.html
標籤:javascript 正则表达式
