我有一个正则表达式,用大括号外的字母“ z”替换所有字符。但是我只想替换字符a-z和A-Z。我该如何修改正则表达式呢?
在javascript中:
let str = "hours, plural, =1 {hour} other {hours}";
str.replace(/[^{}](?=([^{}]*\{[^{}]*\})*[^{}]*$)/g, 'z');
这导致:
zzzzzzzzzzzzzzzzzz{hour}zzzzzzz{hours}
但应为:
zzzzz, zzzzzz, =1 {hour} zzzzz {hours}
谢谢!
答案 0 :(得分:0)
您可以使用此先行正则表达式进行搜索:
/[a-zA-Z](?![^{]*})/g
说明:
[a-zA-Z]
:匹配字母a-z
或A-Z
(?![^{]*})
:否定性的前瞻性断言,我们没有前面的关闭}
,而在两者之间没有打开{
。代码:
const regex = /[a-zA-Z](?![^{]*})/g;
const str = `hours, plural, =1 {hour} other {hours}`;
const result = str.replace(regex, 'z');
console.log(result);
//=> zzzzz, zzzzzz, =1 {hour} zzzzz {hours}