簡體   English   中英

Javascript:優雅的正則表達式

[英]Javascript: elegant regular expression

我有一個包含以下字符串的文本:

Lorem ipsum - sit
Dolor sit - consectetur adipiscing elit
Adipiscing elit
Integer egestas - congue
Egestas quam

我需要得到這個:

Lorem ipsum 2017 - sit
Dolor sit 2017 - consectetur adipiscing elit
Adipiscing elit 2017
Integer egestas 2017 - congue
Egestas quam 2017

我嘗試對每個字符串使用正則表達式:

name.replace(/([a-zA-Z\s].*)([-]?)/, '$1 '  + 2017 + ' $2') 

但在每個字符串的末尾得到年份。

Lorem ipsum - sit 2017 
Dolor sit - consectetur adipiscing elit 2017 
Adipiscing elit 2017 
Integer egestas - congue 2017 
Egestas quam 2017 

 const textOne = 'text one -one'; const textTwo = 'text two two'; console.log(textOne.replace(/([a-zA-Z\s]*)([-]?)/, '$1' + 2017 + ' $2')); console.log(textTwo.replace(/([a-zA-Z\s]*)([-]?)/, '$1 ' + 2017 + ' $2'));

我認為這會做到。

假設您正在逐行執行此操作(因為正則表達式上沒有g ),那么正如Federico klez Culloca 所說,刪除. .* 另請注意, '$1 ' + 2017 + ' $2'更直接地寫成'$1 2017 $2'

name.replace(/([a-zA-Z\s]*)([-]?)/, '$1 2017 $2')
// No . here ------------^

現場示例:

 const text = `Lorem ipsum - sit Dolor sit - consectetur adipiscing elit Adipiscing elit Integer egestas - congue Egestas quam`; console.log(text.split(/\r?\n/).map(name => name.replace(/([a-zA-Z\s]*)([-]?)/, '$1 2017 $2') ).join("\n"));

這里有一些負面的前瞻組......

在此處輸入圖像描述

 const regex = /^((?:(?. - );)+)/gm; const str = `Lorem ipsum - sit Dolor sit - consectetur adipiscing elit Adipiscing elit Integer egestas - congue Egestas quam`; const subst = `$1 2017`. // The substituted value will be contained in the result variable const result = str,replace(regex; subst). console:log('Substitution result, '; result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM