正则表达式用逗号分隔3个字母的单词

时间:2019-01-22 18:36:38

标签: javascript regex

我只想为正好3个字母的单词创建一个正则表达式,以逗号分隔。 3个字母单词可以用空格填充(每边最多1个)

有效示例:

ORD
JFK, LAX
ABC,DEF, GHK,REW, ASD

无效的示例:

ORDA
OR
ORD,
JFK, LA

我尝试了以下操作,但无法正常工作。

^(?:[A-Z ]+,)*[A-Z ]{3} +$ 

3 个答案:

答案 0 :(得分:0)

尝试以下模式:

^[A-Z]{3}(?:[ ]?,[ ]?[A-Z]{3})*$

此模式与最初的三个字母单词匹配,后面再与两个词相匹配,并用逗号隔开,并带有可选的空格。

答案 1 :(得分:0)

尝试以下操作:^([ ]?[A-Z]{3}[ ]?,)*([ ]?[A-Z]{3}[ ]?)+$

https://regex101.com/r/HFeN0D/2/

它匹配至少一个三个字母的单词(带空格),其后跟任意数量的单词,三个字母的单词后跟逗号。

答案 2 :(得分:0)

您可以使用以下模式进行操作:^((:? ?[A-Z]{3} ?,)*(?: ?[A-Z]{3} ?))+$

var str = `ORD
JFK, LAX
ABC,DEF, GHK,REW, ASD

ORDA
OR
ORD,
JFK, LA`;

let result =  str.match(/^((:? ?[A-Z]{3} ?,)*(?: ?[A-Z]{3} ?))+$/gm);
document.getElementById('match').innerHTML = result.join('<br>');
<p id="match"></p>