繁体   English   中英

正则表达式限制星号(*)和数字的长度

[英]Regular expression restrict the length number of stars(*) and numeric

我正在尝试使用正则表达式,其中我需要限制星数(*)和数值,我确实这样做是为了限制星数* /([*]*\\*[^*]*){9}/其中星号( *)现在将限制最多9个,我需要限制数字也最多限制9个,请同样帮助我。

您可以使用

/^(?=(?:[^*]*[*]){9})(?=(?:\D*\d){9})/

正则表达式细分:

  • ^ -匹配字符串的开头
  • (?=(?:[^*]*[*]){9}) -要求字符串在任何位置至少具有9 *符号
  • (?=(?:\\D*\\d){9}) -要求字符串在任何位置至少有9位数字

正则表达式演示

正则表达式的基础是:

  • 环视开始处(带有^ )仅检查一次子模式的存在
  • 它们不使用字符,因此每个前行都会从字符串开头检查字符串
  • 使用相反的子模式: [^*]检查任何字符,但*\\D检查彼此之间的非数字字符(即(?:[^*]*[*]){9}匹配的零个或多个字符序列9比其它*随后与一个* )。

要仅匹配包含最多 9个数字和星号的字符串,您需要扩展前行:

/^(?=(?:[^*]*[*]){1,9}[^*]*$)(?=(?:\D*\d){1,9}\D*$)/

否定的字符类应添加在每个前行的末尾,并应使用$来确保我们检查了整个字符串,直到其结尾为止。 {1,9}将匹配应用于限制量词的1到9个子模式。

观看此正则表达式演示

 var ss = [ "12345****6789*****", "1234534****6789*****", "12345*********6789*****", "****12", "****6766", "773***666**"]; // Test strings var rx = /^(?=(?:[^*]*[*]){1,9}[^*]*$)(?=(?:\\D*\\d){1,9}\\D*$)/; // The regex for (var s = 0; s < ss.length; s++) { // Demo document.body.innerHTML += "Testing \\"<i>" + ss[s] + "</i>\\"... "; document.body.innerHTML += "Matched: <b>" + rx.test(ss[s]) + "</b><br/>"; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM