javascript - 获取非标准模式内的子字符串

标签 javascript regex

我想在以下情况下获取子字符串:

TruckScaleEntry_DriverId_1535
                ^------^

EntryCreateForm_TruckScaleEntry_DriverId_1535_SelectWidget_Code
                                ^------^

在上面的示例中,我想要 DriverId(它并不总是 DriverId,它也可能会改变),但我永远不知道我正在处理哪种模式。实际上,我让它可以与两个正则表达式和两个方法(matchreplace)一起使用。但我想知道是否有更好、更简单的方法来实现它。

我得到的是:

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/

相关文章:

javascript - 使用 Javascript 客户端计算文本区域中超链接的最佳方法?

C++、正则表达式

javascript - 表格标题不会滚动到页面顶部之外?

javascript - 按两个输入值之间的范围过滤元素的菜单

javascript - 如何使用 jquery each() 获取前一个元素

regex - 如何使用 bash 脚本验证电子邮件 ID?

java - Java正则表达式的初学者问题

java - 创建包含分隔符的 on split 方法

javascript - 如何显示jquery slider 的当前值

javascript - 为什么 delay() 方法在 session 存储中不起作用?