如何用JavaScript正则仅替换多行字符串行首的数字加句号为<li>?
解决多行字符串中仅替换行开头1-2位数字加句号的问题
你的正则表达式之所以会错误替换行内内容,问题出在两点:
- 没有限定匹配位置,会命中字符串里任意位置的数字加任意字符(
.在正则里是通配符,并非字面意义的句号) - 未启用多行模式,
^只会匹配整个字符串的开头,而非每一行的开头
正确的正则表达式为 ^\d{1,2}\./gm,各部分作用:
^:在多行模式下匹配每一行的起始位置\d{1,2}:精准匹配1到2位数字\.:匹配字面意义的句号(必须转义,否则.会匹配任意字符)g:全局替换所有符合条件的内容m:启用多行模式,让^能识别每一行的开头
修改后的代码如下:
let text =` 1. Some text here Any text here Some text here 2. Some text here Any text here 24 Some text here 30. Some text here 42. Any text here Some text here`; let regex = /^\d{1,2}\./gm; let result = text.replace(regex, '<li>'); document.write(result);
运行后只会替换行开头的1.、2.、30.为<li>,行内的24和42.会被保留,完全符合需求。
内容的提问来源于stack exchange,提问作者Cove
相关产品推荐
相关产品推荐

