需要正则表达式找到输入名称javascript的最后一部分

Need regex to find last part of input name javascript

本文关键字:javascript 最后 一部分 输入 正则表达式      更新时间:2023-09-26

我有以下输入名称:

fw_options[testgradient][background-gradient-start-color]

我需要得到名字的最后一部分:

background-gradient-start-color

我可以用这段混乱的代码做到这一点:

name.replace('][','-').replace(/^[^-]*-/,'').replace(']','').replace('[','');

但是,我忘记了名称也可以是这样的:

fw_options[header_boxstyle][background][background-gradient-start-color]

所以,我最终得到了错误的字符串:

backgroundbackground-gradient-start-color

有人能帮我简化一下吗,这样我就不用多次替换了?

我需要得到最后一部分不匹配background-gradient-start-color 字面上,因为我有多个名字,我需要找到相同的正则表达式。

您可以使用正则表达式和捕获组提取它:

'[([^']]*)']$

看到演示

该值将属于第1组。

var re = /'[([^']]*)']$/g; 
var str = 'fw_options[testgradient][background-gradient-start-color]';
    
if ((m = re.exec(str)) !== null) {
   document.getElementById("res").innerHTML = m[1];
}
<div id="res"/>

lastIndexOf的非正则表达式方式(粗糙,没有错误检查):

var str = "fw_options[testgradient][background-gradient-start-color]";
var ido = str.lastIndexOf("[");
var idc = str.lastIndexOf("]");
alert(str.substring(ido+1,idc));

您还可以使用其他技巧:

var input = 'fw_options[testgradient][background-gradient-start-color]';
alert(input.replace(/']/g, '').split(/'[/g).pop());