用于验证特定模式的正则表达式

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方法)

js 常用正则表达式表单验证代码

用于密码验证的正则表达式,仅特定字符 [重复]

正则表达式概述

用于以特定顺序验证电话号码的正则表达式

正则表达式