javascript - 用于验证信用卡对账单的对账单描述符的正则表达式

标签 javascript regex

我正在尝试验证用户输入的字符串是否用作信用卡对账单上的对账单描述以描述购买。

要求是:

  • 长度必须在 5 到 22 个字符之间
  • 必须至少包含一个字母(不区分大小写)
  • 不能包含这些字符:< >\' "
  • 只允许使用 ASCII 字符

这是我到目前为止所得到的,有点在工作:

/^(?=.*?[a-zA-Z])[a-zA-Z0-9]{5,22}$/gm

...因为它正确地检查了 5-22 个字符的长度并检查了至少一个字母。但是,它不允许所有特殊字符和变音符号,而不仅仅是少数不允许的字符和变音符号。我如何修改它以允许其他允许的字符?

最佳答案

您可以使用正向先行断言一个字符,使用负向先行断言不匹配字符类中列出的任何字符。

对于 Javascript,您可以使用不区分大小写的标志 /i并使用 [a-z] .

编辑:作为Wiktor Stribiżew指出,要仅匹配 ASCII 字符,您可以使用 [\x00-\x7F]而不是使用点。

^(?=.*[a-z])(?!.*[<>\\'"])[\x00-\x7F]{5,22}$
  • ^字符串开始
  • (?=.*[a-z])正向前瞻检查是否有 ASCII 字母
  • (?!.*[<>\\'"])否定前瞻检查字符类中没有任何字符
  • [\x00-\x7F]{5,22}匹配任何 ASCII 字符 5 - 22 次
  • $字符串结束

例如:

const regex = /^(?=.*[a-z])(?!.*[<>\\'"])[\x00-\x7F]{5,22}$/gmi;

参见 regex demo

关于javascript - 用于验证信用卡对账单的对账单描述符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54030055/

相关文章:

javascript - 处理背景YouTube视频不与tubular.js一起播放

regex - 范围倒序?

javascript - 正则表达式查找所有至少包含一个星号的单词

Python 如何将带连字符的单词与换行符合并?

java - 替换字符串的最后一部分

javascript - JS 预加载图片错误

javascript - 穿过圆 Javascript 的线

javascript - 如何将私有(private)函数绑定(bind)为回调

javascript - AngularJS 警报服务 : fading out ng-repeat item

Javascript - 使用可选主题标签搜索字符串