好的,所以标题必须是头颅,但这里是完整的字符串:
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”
This就在我身边:
var str = "prefix_param_name_id_set_selected_param_name_index__target_";
alert(str.match(/\(([^)]*)\)[^(]*$/)[1]);
返回“目标”;它应该是“_target”。
更新
请注意,“y”是一个变量且未知。 str是已知的,但正则表达式不知道“y”是什么,只是在最后一次出现的“x”之间找到它
答案 0 :(得分:0)
您需要使用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);