簡體   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