具有字符限制的 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 正则表达式白名单的主要内容,如果未能解决你的问题,请参考以下文章