正则中不以某些字符开头,或者不以某些字符结尾的解决方法
需要解决的问题如下:
名称校验中只能包含数字大小字母下划线和点字符,但是不能以 - 和 点字符开头,且不能以点字符结尾。
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-.](?<![.])$/