gpt4 book ai didi

javascript - 正则表达式从字符串中删除数字(仅限年份)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:01:49 27 4
gpt4 key购买 nike

我知道分隔两个单词的正则表达式如下:

输入:

'WonderWorld'

输出:

'Wonder World'

"WonderWorld".replace(/([A-Z])/g, ' $1');

现在我想从字符串中删除年份格式的数字,应该在上面的代码中做哪些更改才能得到:

输入

'WonderWorld 2016'

输出

'Wonder World'

最佳答案

您可以将大写字母(但不包括行首)之前的位置与 \B(?=[A-Z]) 匹配,并将尾随空格(如果有)与前面的 4 位数字匹配结尾 (\s*\b\d{4}\b)。在回调中,检查匹配项是否不为空,并相应地进行替换。如果 match 为空,我们匹配大写字母之前的位置(=> 替换为空格),如果不是,我们匹配末尾的年份(=> 替换为空字符串)。由于 \d{4} 周围的 \b 单词边界,四位数字 block 仅匹配为整个单词。

var re = /\B(?=[A-Z])|\s*\d{4}\b/g; 
var str = 'WonderWorld 2016';
var result = str.replace(re, function(match) {
return match ? "" : " ";
});
document.body.innerHTML = "<pre>'" + result + "'</pre>";

类似的方法,只是匹配粘合词的不同模式(结果可能更可靠):

var re = /([a-z])(?=[A-Z])|\s*\b\d{4}\b/g; 
var str = 'WonderWorld 2016';
var result = str.replace(re, function(match, group1) {
return group1 ? group1 + " " : "";
});
document.body.innerHTML = "<pre>'" + result + "'</pre>";

在这里,([a-z])(?=[A-Z]) 匹配并将一个小写字母后跟一个大写字母捕获到第 1 组,并在其中在回调中,我们检查第 1 组是否匹配(与 group1 ?)。如果匹配,我们返回 group1 + 一个空格。如果不是,我们匹配最后的年份,并将其删除。

关于javascript - 正则表达式从字符串中删除数字(仅限年份),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35646600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com