[英]What is the regex to match alphanumeric 6 character words, separated by space or comma
我是 RegEx 的新手,正在尝试设计一个可以匹配以下字符串的 RegEx:
模式 1 以逗号和空格分隔: KEPM39, JEMGH5, HEPM21
...(重复)
模式 2 仅由空格分隔: KEPM39 JEMGH5 HEPM21
...(重复)
模式 3 仅用逗号分隔: KEPM39,JEMGH5,HEPM21
...(重复)
这是我的概念: "^[a-zA-Z0-9]{6,}[,\s]+$"
但它似乎是错误的。
#我想验证整个字符串,我使用 javascript & html 来验证用户输入。 (文本区域)
#duplicate 改为 repeat 更合适。
function validate(){
var term = "JEPM34, KEPM11 ";
var re = new RegExp("^[a-zA-Z0-9]{6,}[,\s]+$");
if (re.test(term)) {
return true
} else {
return false
}
}
提前谢谢你!
一种非常宽松的验证方式可能是:
^[A-Z\d]{6}(?:[ ,]+[A-Z\d]{6})*$
请参阅在线演示。 松散的意思是[,]+
没有检查字符串中的每个定界符是否与每个定义相同。 因此,即使"KEPM39, JEMGH5 HEPM21, HEGD44 ZZZZZZ"
也是有效的。
如果您想要一致的分隔符,并且可以有尾随空格(如示例数据中所示),您可以使用带有反向引用\1
的捕获组来保持一致的分隔符并匹配末尾的可选空格。
请注意,您也可以使用\s
但也可以匹配换行符。
使用test将返回 boolean,因此您不必使用 return true 或 false 但您可以返回结果 test`
^[A-Z\d]{6}(?:(, ?| )(?:[A-Z\d]{6}\1)*[A-Z\d]{6} *)?$
模式匹配:
^
字符串开头[AZ\d]{6}
匹配 6 次出现的字符 AZ 或数字(?:
非捕获组作为一个整体匹配
(, ?| )
捕获组 1 ,匹配逗号和可选空格,或用作反向引用的空格(?:[AZ\d]{6}\1)*
可以选择重复任何列出的后跟\1
到组 1 的反向引用,这将匹配相同的分隔符[AZ\d]{6} *
匹配最后列出的任何空格和可选空格)?
关闭组并使其可选以匹配不带分隔符的实例$
字符串结尾 const regex = /^[AZ\d]{6}(?:(, ?| )(?:[AZ\d]{6}\1)*[AZ\d]{6} *)?$/; const validate = term => regex.test(term); [ "KEPM39, JEMGH5, HEPM21", "KEPM39 JEMGH5 HEPM21", "KEPM39,JEMGH5,HEPM21", "JEPM34, KEPM11 ", "JEPM34, KEPM11", "JEPM34", "KEPM39, JEMGH5 HEPM21, HEGD44 ZZZZZZ", "KEPM39, JEMGH5 HEPM21" ].forEach(s => console.log(`${s} ==> ${validate(s)}`) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.