我试图通过单个正则表达式在JavaScript中匹配两种情况的字符串。字符串可以是任何给定格式

//Singapore
//Singapore (country)


我尝试了以下正则表达式来匹配字符串

"singapore".match(/(.*) (?:\((.*)\))?/)
//null
"singapore (country)".match(/(.*) (?:\((.*)\))?/)
//["singapore (country)", "singapore", "country"]


我希望两个结果都返回一个数组,就像第二种情况一样,其中数组中的第三项可以是未定义/空的或根本不存在,但结果不应为null。

可以通过单个正则表达式来完成。如果是,那么上面表达式中的错误是什么

最佳答案

您需要将空格放在可选组中,因为在"singapore"情况下不是这样:/^([^\(]*)(?: \(([^\)]*)\))?$/

关于javascript - 将字符串与正则表达式匹配将返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36475590/

10-11 18:37