Aus*_*ust 9 javascript regex or-operator
我有我的正则表达式/'(.*)(?:(?:'\s*,\s*)|(?:'\)))/
和我的测试代码('He said, "You're cool."' , 'Rawr')
(我的测试代码模拟传递给函数的参数.)
我将解释我的正则表达式,因为我理解它,并希望你们中的一些人可以解释我的问题.
1)/'
意味着在匹配字符串的开头,需要有'
2)(.*)
意味着捕获任何字符,除了\n
0次或更多次
3)(?:(?:4)|(?:5))
意味着不捕获但尝试执行步骤4,如果它不起作用,请尝试步骤5
4 )(?:'\s*,\s*)
意味着不捕获,但需要有一个'
0或更多的空白字符后跟一个,
0或更多的空格字符
5)(?:'\))
意味着不捕获但需要有')
所以它似乎应该返回这个(和是我想要的):
'
+ He said, "You're cool."
+ ' ,
但它返回:
'
+ He said, "You're cool."' , 'Rawr
+ ')
如果我将我的测试代码改为('He said, "You're cool."' , 'Rawr'
(没有结束括号)它返回我想要的东西,但是一旦我添加了最后一个括号,那么我的OR运算符似乎是不管它想要什么.我希望它首先测试是否有逗号,如果有一个逗号则在那里打破,如果没有一个括号检查.
我已经尝试切换步骤4和步骤5的点,但是OR运算符似乎总是默认为(?:'\))
侧面.
我怎样才能匹配尽可能短的数量?