获取非标准模式中的子字符串
Get sub-string within non-standard pattern
在以下情况下,我想获得一个子字符串:
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>');
捕获组的结果存储在match objects
中,match[1]
等可以访问。
JS演示
var str = 'EntryCreateForm_TruckScaleEntry_DriverId_1535_SelectWidget_Code';
var regex = /TruckScaleEntry_([^_]+)/;
document.writeln(str.match(regex)[1]);
相关文章:
- 获取非标准模式中的子字符串
- 使用Javascript为select标记添加非标准属性
- 在 angularjs 中适应非标准属性
- 替换/限制 CKEDITOR 中的非标准字符
- 树中节点的非标准检查
- 使用非标准REST API的Ember数据
- 使用非标准密钥长度调用CryptoJS.AES.encrypt/decrypt时,如何处理AES密钥
- 为什么在DOM中插入中间非标准元素会破坏flex框
- 解析非标准 JSON
- 如何从angular.js中的非标准目录加载部分文件?
- 我可以使用WebRTC接收非标准RTP流吗?
- 是否有可能本地扩展web API以允许CSSRule.cssText返回非标准css属性
- 使用非标准属性
- 使用jQuery自动完成与非标准选项
- Regexp:排除一个单词,但包含非标准标点符号
- 在JavaScript文件中使用非标准字符导致IE错误
- 添加非标准标记属性
- 在Angular Js中解析非标准JSON
- 如何使用javascript或jquery读取非标准json文件
- JavaScript:将字符转换为代码,或将字符串转换为二进制数组(数字数组)的非标准方法