辣 angularjs 正则表达式
spicy angularjs regex
我一直在研究 angularJs ng-pattern 的正则表达式问题,它需要:
- 不能为空
- 最少 1 个字符,最多 32 个字符
- 不允许仅使用空格
- 可接受的特殊字符(!@#$%&*-+=[]:;',.?)
- 答案不区分大小写
- 不允许 的组合
- 应删除答案开头和结尾的空格。
这是我的解决方案,涵盖了除第 6 项以外的所有要求:
([^a-zA-Z0-9!@#$%& *+=[\]:;',.?-])|(^\s*$)
你们有什么想法吗?
您可以使用
/^(?!\s*$)(?!.*&#)[a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]{1,32}$/
参见regex demo。
详情
^
- 字符串开头
(?!\s*$)
- 不允许从字符串开始到结束有 0+ 个空格
(?!.*&#)
- 在任何 0+ 个字符后不允许 &#
[a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]{1,32}
- 1 到 32 个允许的字符:ASCII 数字、字母、空格和一些 punctuation/symbols
$
- 字符串结尾。
我一直在研究 angularJs ng-pattern 的正则表达式问题,它需要:
- 不能为空
- 最少 1 个字符,最多 32 个字符
- 不允许仅使用空格
- 可接受的特殊字符(!@#$%&*-+=[]:;',.?)
- 答案不区分大小写
- 不允许 的组合
- 应删除答案开头和结尾的空格。
这是我的解决方案,涵盖了除第 6 项以外的所有要求:
([^a-zA-Z0-9!@#$%& *+=[\]:;',.?-])|(^\s*$)
你们有什么想法吗?
您可以使用
/^(?!\s*$)(?!.*&#)[a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]{1,32}$/
参见regex demo。
详情
^
- 字符串开头(?!\s*$)
- 不允许从字符串开始到结束有 0+ 个空格(?!.*&#)
- 在任何 0+ 个字符后不允许&#
[a-zA-Z0-9!@#$%&*+=[\]:;',.?\s-]{1,32}
- 1 到 32 个允许的字符:ASCII 数字、字母、空格和一些 punctuation/symbols$
- 字符串结尾。