我需要一个混合长度的正则表达式验证,以大写/数字和0-2空格表示的4-6个字符的总长度为6个字符。
我试过
^[A-Z0-9]{4,6}+[\s]{0,2}$但它的最大长度为8个字符,但我需要一个最大的6个字符。
发布于 2018-09-27 15:17:33
如果字母数字字符只应出现在字符串的开头,而空白空间可以出现在末尾(即字母数字和空白空间的顺序重要),则可以使用
/^(?=.{6}$)[A-Z0-9]{4,6}\s*$/详细信息
^ -字符串的开始(?=.{6}$) -字符串长度仅限于6个非行中断字符。[A-Z0-9]{4,6} - 4,5或6大写字母或数字\s* - 0+空白空间(但实际上只能添加0、1或2,因为总长度已经通过查找验证了)$ -字符串的末端。如果要匹配字符串中任何位置的字母数字和空白空间,则需要一个基于环顾四周的正则表达式,如
^(?=(?:[^A-Z0-9]*[A-Z0-9]){4,6}[^A-Z0-9]*$)(?=(?:\S*\s){0,2}\S*$)[A-Z0-9\s]{6}$详细信息
^ -字符串的开始(?=(?:[^A-Z0-9]*[A-Z0-9]){4,6}[^A-Z0-9]*$) -在字符串中任何地方都需要有4到6个字母或数字的正面展望。(?=(?:\S*\s){0,2}\S*$) -在字符串中的任何位置都需要0到2个空白空间的积极展望[A-Z0-9\s]{6} -6 ASCII大写字母、数字或空白$ -字符串的末端。为了缩短模式,第二次查找可以写为(?!(?:\S*\s){3}),如果字符串中任何地方都有3个空格字符,它就会失败。见regex演示。
发布于 2018-09-27 15:33:49
您可以使用|字符将多个情况合并为一个。
const regex = /(^[A-Z0-9]{4}\s{2}$)|(^[A-Z0-9]{5}\s$)|(^[A-Z0-9]{6}$)/g;
alert(regex.test(prompt('Enter input, including space(s)')));
https://stackoverflow.com/questions/52540181
复制相似问题