用于验证特定模式的正则表达式
Posted
技术标签:
【中文标题】用于验证特定模式的正则表达式【英文标题】:Regular expression to validate a specific pattern 【发布时间】:2016-11-15 01:01:49 【问题描述】:我正在尝试创建具有以下限制的正则表达式
-
允许任何字符 '\w\W\s'(例如 rand123#!#@adfads)
只禁止数字(例如 12312312)
仅禁止使用非字母数字字符(例如 !@#$$#%#^%$^%)
字符数必须在 3 到 60 之间
按照this answer 的思路进行操作,但无法正常工作。
^(?=.3,60$)(?![\W_]*$)(?![0-9]*$)[\w\W\s]+$
【问题讨论】:
这个问题有点不清楚。试试^(?![\w\W]*[\W_]2)(?![\w\W]*[0-9]2)[\w\W]3,60$
。
或(修改后)^(?![\W_]+$)(?![0-9]+$)[\w\W]3,60$
【参考方案1】:
注意\W
匹配\s
,所以'\w\W\s'
可以简化为[\w\W]
。
您可以在开始时使用 2 个否定前瞻来强加两个“仅禁止”条件,如下所示:
^(?![\W_]+$)(?![0-9]+$)[\w\W]3,60$
见regex demo
模式详情:
^
- 字符串开头
(?![\W_]+$)
- 字符串不能由非字母数字字符组成
(?![0-9]+$)
- 字符串不能只包含数字
[\w\W]3,60
- 3 到 60 个任意字符
$
- 字符串结束。
【讨论】:
以上是关于用于验证特定模式的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript之基础-10 JavaScript 正则表达式(概述定义正则RegExp对象用于模式匹配的String方法)