我想在以下情况下获取子字符串:
TruckScaleEntry_DriverId_1535
^------^
EntryCreateForm_TruckScaleEntry_DriverId_1535_SelectWidget_Code
^------^
在上面的示例中,我想要 DriverId
(它并不总是 DriverId
,它也可能会改变),但我永远不知道我正在处理哪种模式。实际上,我让它可以与两个正则表达式和两个方法(match
和 replace
)一起使用。但我想知道是否有更好、更简单的方法来实现它。
我得到的是:
console.log("TruckScaleEntry_DriverId_1535".match(/(?:.*TruckScaleEntry_)[^_]*/)[0].replace(/^.*_/, ''));
console.log("EntryCreateForm_TruckScaleEntry_DriverId_1535_SelectWidget_Code".match(/(?:.*TruckScaleEntry_)[^_]*/)[0].replace(/^.*_/, ''));
是的,它很丑。我可以只用一种正则表达式和一种方法做一些更清晰的事情吗?
最佳答案
您可以将此正则表达式与replace
一起使用:
var s = 'EntryCreateForm_TruckScaleEntry_DriverId_1535_SelectWidget_Code';
res = s.replace(/^.*?TruckScaleEntry_(.+?)_.*$/, '$1');
document.write(res + '<br>');
// Alternative
res = s.match(/TruckScaleEntry_(.+?)_/)[1];
document.write(res + '<br>');
关于javascript - 获取非标准模式内的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944476/