正则中不以某些字符开头,或者不以某些字符结尾的解决方法

需要解决的问题如下:

名称校验中只能包含数字大小字母下划线和点字符,但是不能以 - 和 点字符开头,且不能以点字符结尾。

1.不以某些字符开头

正则的正常开头和结尾分别是 ^ 和 $ 符号 ,^ 表示这个正则开始了,$ 则表示这个正则到此结束。
js中定义一个正则:

1. let reg = /^[a-zA-Z0-9]$/  
2. let regObj = new RegExp('^[a-zA-Z0-9]$')

而不以某个字符开头则是
^(?! str)
这里使用了下面几个元符号:

  1. ^ 判断是否是开头
  2. ?! 这里是否定向前查询

例如不能使用-.开头 则正则的开始表示应该如下:

let nameReg = /^(?![-.])[a-zA-Z-.0-9]/

2.不以某些字符结尾

不能以某些字符结尾和不能以某些字符开头非常相似。
(?<!str)
这里用了如下几个符号:

  1. ?<! 否定式向后查询
  2. $ 是否结尾

所以上边的正则就如下:

let  nameReg = /^(?![-.])[0-9a-zA-Z-.](?<![.])$/
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐