具有字符限制的 Javascript 正则表达式白名单

Posted

技术标签:

【中文标题】具有字符限制的 Javascript 正则表达式白名单【英文标题】:Javascript Regex Whitelist with character limit 【发布时间】:2012-06-12 04:20:04 【问题描述】:

我正在尝试在此白名单正则表达式方法中添加字符限制子句

str = str.replace(/[^A-Za-z-_0-9 ]/g, "");

有可能吗?我该怎么做?

【问题讨论】:

我不确定你到底想做什么。你能提供一个示例字符串并描述你想要的行为吗?我猜您想限制整个字符串的长度,或者您只想匹配超过(或低于)某个长度的匹配字符的运行。 例如,假设您有 10 个限制:对于字符串 "aaa%$?!@^&*()~`bbb" 应该在中间运行 12 个无效字符 因为匹配的字符超过 10 个而被删除? 【参考方案1】:

使用量词指定限制。

如果您想要一个最大值(例如 10 个),请执行以下操作:

str = str.replace(/[^A-Za-z-_0-9 ],10/g, "");

至少:

str = str.replace(/[^A-Za-z-_0-9 ]10,/g, "");

一个范围:

str = str.replace(/[^A-Za-z-_0-9 ]8,10/g, "");

确切的数量:

str = str.replace(/[^A-Za-z-_0-9 ]10/g, "");

【讨论】:

我尝试了这个解决方案,但没有成功,这就是我来这里的原因:(.tag = tag.replace(/[^A-Za-z-_0-9 ]0, 5/g, ""); 虽然这仍然正确地将字符列入白名单,但它并没有强制字符串的字符限制【参考方案2】:
str = str.replace(/[^A-Za-z-_0-9\s]/g, "").substring(0,10);  //At most 10 chars

【讨论】:

在你做之前就给出了答案,但感谢这个作品。有时简单的解决方案是最好的:D

以上是关于具有字符限制的 Javascript 正则表达式白名单的主要内容,如果未能解决你的问题,请参考以下文章

具有特殊字符的Javascript正则表达式密码验证

在javascript中匹配具有多个正则表达式模式的字符串

用于匹配单词的 javascript 正则表达式模式,具有自定义单词边界

正则表达式用于电子邮件,但具有白名单[重复]

正则表达式仅允许某些特殊字符并限制下划线

javascript正则表达式