[英]JavaScript Regex return the last occurrence of y between x while ignoring double x's second occurrence
好的,标题一定是头上的划痕,但这是完整的字符串:
y = "_target"
x = "_"
string A = "prefix_param_name_id_set_selected_param_name_index__target_"
string B = "prefix_param_name_id_set_selected_param_name_index_target_"
因此返回“ y”,其中在某些情况下“ y”可能是“ _target”而在另一个“ y”可能是“ target”
这是我在这里:
var str = "prefix_param_name_id_set_selected_param_name_index__target_";
alert(str.match(/\(([^)]*)\)[^(]*$/)[1]);
返回“目标”; 它应该是“ _target”。
更新:
请注意,“ y”是一个变量,未知。 str是已知的,但正则表达式不知道“ y”是什么,只是在最后一次出现“ x”之间找到它
您需要使用x
和y
创建正则表达式
var y = "_target";
var x = "_";
var regexp = new RegExp("(?<=" + x + ")(" + y + ")(?=" + x + ")", "g");
var input = "prefix_param_name_id_set_selected_param_name_index__target_";
var matches = input.match(regexp);
matches
输出
[“_目标”]
说明
(?<=" + x + ")
检查y是否跟随x
(" + y + ")
捕获y
(?=_)
检查x
跟随y
。 演示版
var y = "_target"; var x = "_"; var regexp = new RegExp("(?<=" + x + ")(" + y + ")(?=" + x + ")", "g"); var input = "prefix_param_name_id_set_selected_param_name_index__target_"; var matches = input.match(regexp); console.log(matches);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.