子字符串和第一个点之间的文本

时间:2018-12-20 16:19:08

标签: javascript regex

我有一个文本,我需要替换原始文本中的一些文本。 因此,例如:

原始文本: 与附件一起出售的公寓。交易日期01-01-2014在同一地区进行。英马库拉达,10。建设年:1974。对hpi(4%),面积(-5.00%)进行了调整。调整后的收市价:1,022.07€/ m2。

我需要找到替换子字符串“ Construction year:”和该子字符串之后的下一个点(。)之间的内容。

最终预期文本: 与附件一起出售的公寓。交易日期01-01-2014在同一地区进行。英马库拉达,10。新建筑年:2010年。对人为中心(4%),面积(-5.00%)进行了调整。调整后的收市价:1,022.07€/ m2。

我得到的最终文本不正确 我得到了最后一个点(。),也没有下一个点,因此子字符串和最后一个点(。)之间的所有内容都被更改。得到这个:

带附件的公寓。交易日期01-01-2014在同一地区进行。英马库拉达,10。新建年份:2010。

var new_genic_comparable_comment = generate_comparable_comment.replace(/(目录参考:)。。([^。] )/,'目录参考:'+ value +')。');

谢谢。

5 个答案:

答案 0 :(得分:2)

您使用的(Construction year:).*.([^.]*)正则表达式捕获了捕获组中的建设年份:。然后.*与除换行符0+次以外的任何字符匹配,并将匹配到字符串末尾。之后,它会匹配任何字符1次,而不是点号0+次,因此在构建年份:之后的所有时间都将保持匹配。

如果要替换Construction year:之后的年份,则可以使用捕获组$1,后跟要替换的匹配项。在捕获组之后,您不能匹配点[^.]+

(Construction year: )[^.]+

Regex demo

您可以在多个匹配项的正则表达式末尾添加全局标志/g

const regex = /(Construction year: )[^.]+/;
const str = `Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.`;
const subst = `$12010`;
const result = str.replace(regex, subst);

console.log(result);

答案 1 :(得分:1)

类似的东西应该起作用

     var original = 'Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.'
     var newYear = 2010
     var updated = original.replace(/Construction year: \d{4}./, `Construction year: ${newYear}`)
     console.log(updated)

答案 2 :(得分:1)

replace的帮助下,您可以这样做

let str =`Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.`

let op = str.replace(/(Construction year: )([^.]+)/g,"$1"+"2010" )

console.log(op)

答案 3 :(得分:0)

听起来像是将String.replace()与某些Regex结合使用的好时机。

答案 4 :(得分:0)

非常容易配合,只需将replace与简单的正则表达式/Construction year:.*?\./一起使用! 无论是什么,您都将从Construction year:到下一个点!

const text = 'Flat sold with annexes. Transaction date 01-01-2014 carried out in same area. INMACULADA, 10 . Construction year: 1974. Adjustments made for hpi (4%), area (-5.00%). Closed price after adjustments: 1,022.07 €/m2.'

function replace(year) {
  return text.replace(/Construction year:.*?\./, 'New construction year: '+year+'.')
}

console.log(replace('2017'));