[英]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.