我正在尝试匹配字符串a,其中第一个字符是1-9,接下来的三个字符是0-9。如果有任何附加字符,则第一个附加字符不能是数字。完整字符串不能包含@字符。
应该传递的字符串
不应通过
到目前为止,我想出了^[1-9][0-9]{3}(\D)?。但这也通过了12345。
如有任何帮助或指导,将不胜感激:)
发布于 2016-10-02 15:49:51
试试这个正则表达式:
^[1-9][0-9]{3}([^@0-9][^@]*)?$如果我正确地阅读了你的要求,匹配的字符串应该从1-9开始,后面跟着任何数字的3位数字,如果不是数字或符号的话。regex中的[^@0-9]是一个负字符类,它匹配任何非数字字符,而不是at符号。
演示这里:
发布于 2016-10-02 16:33:13
使用此^[1-9][0-9]{3}(?:$|[^@\d][^@]*)
console.log('1234'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('1234 5678910'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('1234AB 12345678'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('1234stackoverflow'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('1234 stackoverflow'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('0123'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('123'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('12345'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('1235@6789'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
console.log('ABCDEF'.match(/^[1-9][0-9]{3}(?:$|[^@\d][^@]*)/));
发布于 2016-10-02 15:49:30
您可以使用它获得正确的匹配:
/^[1-9]\d{3}[a-z]*$/ihttps://stackoverflow.com/questions/39818715
复制相似问题