![](/img/trans.png)
[英]How to extract in elegant way the string using the regular expression in 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.