javascript - 如果一组不匹配,.match() 返回 null

标签 javascript regex match

我要检查几个包含字母数字子字符串的字符串,并且可能包含括号中的列表,其中条目以“:”分隔

示例:

"this(is:an:example)"
"thisAsWell"

首先,我搜索 alphasubstring 和列表,然后将列表分解为数组。

.match(/([a-z]*)\((.*)\)/)
 .spit(":")

适用于同时包含字母数字和列表的字符串,但如果缺少其中一个,则效果不佳。

示例:

// .match(...)
"abc"  
  -> [ "abc" , null , null ]
"abc(1,2,3)"
  -> [ "abc(1,2,3)" , "abc" , "1:2:3" ]
"(1:2:3)"
  -> [ "(1:2:3)" , null , null ] 

如何最好地处理它,可选地检查两个子字符串? 我正在考虑可能的返回,例如:

"abc"  
  -> [ "abc" , "abc" , null ]
"abc(1,2,3)"
  -> [ "abc(1,2,3)" , "abc" , "1:2:3" ]
"(1:2:3)"
  -> [ "(1:2:3)" , null , "1:2:3" ] 

如果可能的话, super 棒的答案会根据正则表达式拆分列表。

最佳答案

您可以选择使用这两个部分:

var re = /(?=.)([a-z]*)(?:\(([^)]*)\))?/

(?=.) 是前瞻,以确保我们不匹配空输入。

测试:

abc".match(re)
["abc", "abc", undefined]

"abc(1,2,3)".match(re)
["abc(1,2,3)", "abc", "1,2,3"]

"(1,2,3)".match(re)
["(1,2,3)", "", "1,2,3"]

"".match(re)
null

关于javascript - 如果一组不匹配,.match() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32625172/

相关文章:

javascript - 除了深层子 div 之外,如何使整个 div 可点击?

javascript - 如何在javascript中制作定时队列

Perl 中的正则表达式不匹配

r - R 版本 4.0.4 中的匹配函数

javascript - 在准备 70-480 Microsoft 考试时,我需要帮助理解为什么答案是正确的

javascript - jQuery 插件。添加选项和回调函数

regex - 编写长正则表达式、嵌入式注释的成语?

Python:更快的正则表达式替换

R:如何将两个 data.frame 合并为一个,匹配的 ID 重复自身,有时会丢失

javascript - 我怎样才能告诉正则表达式从字面上匹配相同的字符串?