正則中不以某些字符開頭,或者不以某些字符結尾的解決方法
需要解決的問題如下:
名稱校驗中只能包含數字大小字母下劃線和點字符,但是不能以 - 和 點字符開頭,且不能以點字符結尾。
1.不以某些字符開頭
正則的正常開頭和結尾分別是 ^ 和 $ 符號 ,^ 表示這個正則開始了,$ 則表示這個正則到此結束。
js中定義一個正則:
1. let reg = /^[a-zA-Z0-9]$/
2. let regObj = new RegExp('^[a-zA-Z0-9]$')
而不以某個字符開頭則是
^(?! str)
這裏使用了下面幾個元符號:
- ^ 判斷是否是開頭
- ?! 這裏是否定向前查詢
例如不能使用-.開頭 則正則的開始表示應該如下:
let nameReg = /^(?![-.])[a-zA-Z-.0-9]/
2.不以某些字符結尾
不能以某些字符結尾和不能以某些字符開頭非常相似。
(?<!str)
這裏用瞭如下幾個符號:
- ?<! 否定式向後查詢
- $ 是否結尾
所以上邊的正則就如下:
let nameReg = /^(?![-.])[0-9a-zA-Z-.](?<![.])$/