Javascript 将每个匹配值放入其自己的捕获组中
我在这方面已经做了太久了,试图找出如何匹配以逗号分隔的值字符串,同时将值拆分为各自的捕获组。以下是我的要求:Javascript 将每个匹配值放入其自己的捕获组中,javascript,regex,capturing-group,Javascript,Regex,Capturing Group,我在这方面已经做了太久了,试图找出如何匹配以逗号分隔的值字符串,同时将值拆分为各自的捕获组。以下是我的要求: 无前导逗号 术语可以是字母数字,包含1到7个字符 最小:1个学期;马克斯:无限 术语和逗号之间的空格不限 无尾随逗号 我非常接近,但我无法将字符串中的所有术语都放入它们自己的捕获组中。相反,它将第一个捕获组的最后一个匹配项放入组#1中,而不是将所有匹配项放入以前的组中。下面是我的例子: abc1234,def5678,ghi9012 我希望abc1234是第1组,def5678是第2
- 无前导逗号
- 术语可以是字母数字,包含1到7个字符
- 最小:1个学期;马克斯:无限
- 术语和逗号之间的空格不限
- 无尾随逗号
/(?:([A-z0-9]{1,7})\s*,\s*)+([A-z0-9]{1,7})/g
我很确定我没有正确设置捕获/非捕获组。任何帮助都将不胜感激。这可以帮到你。使用提取正则表达式,值位于组1中。同时,该值也会被修剪。
如果需要引用字段,请告诉我 请注意,不能使用提取字符来强制执行1-7个字符的要求,
除非提前确认 验证正则表达式:
# /^(?:(?:(?:^|,)\s*)[a-zA-Z0-9]{1,7}(?:\s*(?:(?=,)|$)))+$/
^
(?:
(?: # leading comma + optional whitespaces
(?: ^ | , )
\s*
)
[a-zA-Z0-9]{1,7} # alpha-num, 1-7 chars
(?: # trailing optional whitespaces
\s*
(?:
(?= , )
| $
)
)
)+
$
提取正则表达式
# /(?:(?:^|,)\s*)([^,]*?)(?:\s*(?:(?=,)|$))/
(?: # leading comma + optional whitespaces
(?: ^ | , )
\s*
)
( [^,]*? ) # (1), non-quoted field
(?: # trailing optional whitespaces
\s*
(?:
(?= , )
| $
)
)
你不能这样做,你的正则表达式只有两个捕获组(第一个组每次都被外部(?:())
+
覆盖)。唯一的方法是一次匹配一个字段。所以听起来我需要将其分为两个步骤,而不是一步一步地完成。为你真正理解这些内容,向你致敬。