var str = 'asd-0.testing'; var regex = /asd-(\d)\.\w+/; str.replace(regex, 1);
字符串它将整个字符串str替换为1。我希望它替换匹配的子字符串而不是整个字符串。这在JavaScript中可能吗?
str
1
1hdlvixo1#
var str = 'asd-0.testing'; var regex = /(asd-)\d(\.\w+)/; str = str.replace(regex, "$11$2"); console.log(str);
字符串或者,如果你确定字符串中不会有任何其他数字:
var str = 'asd-0.testing'; var regex = /\d/; str = str.replace(regex, "1"); console.log(str);
型
hxzsmxv22#
使用str.replace(regex, $1);:
str.replace(regex, $1);
var str = 'asd-0.testing'; var regex = /(asd-)\d(\.\w+)/; if (str.match(regex)) { str = str.replace(regex, "$1" + "1" + "$2"); }
字符串编辑:关于评论的改编
um6iljoc3#
我会得到的一部分之前和之后,你想要取代,并把他们的任何一方。喜欢的:
var str = 'asd-0.testing'; var regex = /(asd-)\d(\.\w+)/; var matches = str.match(regex); var result = matches[1] + "1" + matches[2]; // With ES6: var result = `${matches[1]}1${matches[2]}`;
字符串
vq8itlhq4#
我认为实现目标的最简单方法是这样的:
var str = 'asd-0.testing'; var regex = /(asd-)(\d)(\.\w+)/; var anyNumber = 1; var res = str.replace(regex, `$1${anyNumber}$3`);
xurqigkl5#
就个人而言,我喜欢replacer技术提供的自由(搜索“指定函数作为替换”部分)。这也是简单的调试细节。
function replacer(match, p1, p2, offset, string) { console.log('match = ' + match); console.log('p1 = ' + p1); console.log('p2 = ' + p2); console.log('offset = ' + offset); console.log('string = ' + string); custom_op = p1 + 1 + p2; return custom_op; } var str = 'asd-0.testing'; var regex = /(asd-)\d(\.\w+)/; matches = str.match(regex) res = str.replace(regex, replacer); console.log(res); // ----OUTPUT---- // match = asd-0.testing // p1 = asd- // p2 = .testing // offset = 0 // string = asd-0.testing // asd-1.testing
注意:为了简化正则表达式组的识别,可以考虑使用https://regex101.com/
5条答案
按热度按时间1hdlvixo1#
字符串
或者,如果你确定字符串中不会有任何其他数字:
型
hxzsmxv22#
使用
str.replace(regex, $1);
:字符串
编辑:关于评论的改编
um6iljoc3#
我会得到的一部分之前和之后,你想要取代,并把他们的任何一方。
喜欢的:
字符串
vq8itlhq4#
我认为实现目标的最简单方法是这样的:
字符串
xurqigkl5#
就个人而言,我喜欢replacer技术提供的自由(搜索“指定函数作为替换”部分)。这也是简单的调试细节。
字符串
注意:为了简化正则表达式组的识别,可以考虑使用https://regex101.com/