Tof*_*del 5 regex html5-validation
我正在尝试创建一个regex验证用户名,该用户名应与以下内容匹配:
(._-)允许一个特殊字符,它不能位于字符串的极值这是针对HTML5验证模式的,遗憾的是它必须是一个很大的正则表达式.
到目前为止,这就是我所拥有的:
^(?=(?![0-9])[A-Za-z0-9]+[._-]?[A-Za-z0-9]+).{3,20}
Run Code Online (Sandbox Code Playgroud)
但积极的前瞻可以重复多次,允许不止一个特殊角色,这不是我想要的.我不知道如何纠正这一点.
dog*_*ose 15
您应该将正则表达式分成两部分(而不是两个表达式!),以使您的生活更轻松:
首先,匹配用户名需要的格式:
^[a-zA-Z][a-zA-Z0-9]*[._-]?[a-zA-Z0-9]+$
现在,我们只需要验证长度约束.为了不使用已经找到的模式混淆,你可以使用一个非消费匹配,只匹配字符数(它通常是用于为正则表达式创建和模式的hack ):(?=^.{3,20}$)
如果长度约束匹配,正则表达式将仅尝试匹配有效格式.它是非消耗的,因此在成功之后,引擎仍处于字符串的开头.
所以,所有在一起:
(?=^.{3,20}$)^[a-zA-Z][a-zA-Z0-9]*[._-]?[a-zA-Z0-9]+$
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
5975 次 |
| 最近记录: |