繁体   English   中英

匹配一个正则表达式,然后删除该正则表达式的子集

[英]Match a regular expression, then remove a subset of that regular expression

我正在使用javascript解析一些字符串。

我有一些看起来像这样的字符串:

1234 1/2 Old Town Alexandria

我写了一个正则表达式来标识实例,其中实例在街道号之后:

var addressFractionRegex = /^\d*\s+(1[/]\d)\s+/i;

我想做的是仅在整个正则表达式都匹配的情况下才从源字符串中删除正则表达式的小数部分(即:小数前面带有街道编号)。 在这种情况下,我最终将(删除“ 1/2”):

1234 Old Town Alexandria

我还想将删除的部分保存到另一个变量中。 因此,理想情况下,我最终会得到以下结果:

var street_address = '1234 Old Town Alexandria';
var fraction = '1/2';

如何在javascript中完成?

谢谢!

替换可以带一个功能

var fraction;
var street_address = "1234 1/2 Old Town Alexandria".replace(/^\d*\s+(1[/]\d)\s+/i, function (match, capture) {
    fraction = capture.trim();
    return match.replace(capture,'')
});

fraction; // 1/2
street_address; // 1234 Old Town Alexndria

演示

replace函数接受一个替换字符串。 您可以将要保留的所有内容归为一组,并忽略要取出的任何内容。 在这里,我们保留子模式1和3,并保留存储在2中的分数。

var addressFractionRegex = /^(\d*\s+)(1[/]\d)(\s+)/i;

var data = '123 1/5 abc';

alert(data.replace(addressFractionRegex, '$1$3'));

小提琴

您只能捕获要保留的位:

"1234 1/2 Old Town Alexandria".replace(/^(\d*\s+)1\/\d\s/, '$1');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM