我有以下两个字符串。在这两种情况下,我都试图检索“foreclosure_defenses”。
str = "client_profile[lead_profile_attributes][foreclosure_defenses_attributes][0][own_property]"
str2 = "client_profile[foreclosure_defenses_attributes][0][own_property]"
我很接近,但我无法获得适用于他们两个的正则表达式。
这个正则表达式适用于str2,但不适用于str:
regex = /\w+(?:\[(\w+)_attributes\]+)\[\d+\]\[own_property\]/g
regex.exec(str2)
["client_profile[foreclosure_defenses_attributes][0][own_property]", "foreclosure_defenses"]
这个正则表达式适用于str,但不适用于str2:
regex = /\w+(?:\[(\w+)_attributes\]?)+\[\d+\]\[own_property\]/g
regex.exec(str);
["client_profile[lead_profile_attributes][foreclosure_defenses_attributes][0][own_property]", "foreclosure_defenses"]
最后一个应该适用于两种情况,但不适用。它应该寻找一个或多个_attributes模式并抓住最后一个。 我做错了什么?
答案 0 :(得分:1)
我想你想要
/\w+(?:\[(\w+)_attributes\])+\[\d+\]\[own_property\]/
请注意,如果您使用全局g
标志并尝试匹配多个字符串,则需要重置正则表达式的索引。
答案 1 :(得分:0)