使用jQuery移除字符串中第一个数字之前的所有文本
解决方法:移除第一个数字前的所有文本(保留HTML标签结构)
首先咱们来拆解下你当前代码的问题:
split([0-9])的写法有误,split()接收正则表达式时需要用/包裹(即/[0-9]/),但就算修正了这个,pop()也只会取分割后的最后一段,完全不符合你「从第一个数字开始保留所有内容」的需求。- 你用了
text()方法,这会把元素里的<br>标签转换成纯文本,处理后会丢失原有的换行结构,所以得用html()来处理带HTML的内容。
正确实现代码
咱们可以通过正则表达式匹配第一个数字之前的所有内容(包括非数字字符、HTML标签),然后将这部分替换为空字符串。具体代码如下:
$('.ProductItem__Desc').each(function(){ $(this).html(function(_, htmlContent) { // 匹配开头到第一个数字前的所有内容,替换为空 return htmlContent.replace(/^[^0-9]*/, ''); }); });
代码细节解释
^[^0-9]*正则的含义:^表示从字符串的起始位置开始匹配[^0-9]表示匹配任意非数字字符(包含HTML标签、空格、换行符等)*表示匹配前面的规则零次或多次,也就是把第一个数字出现前的所有内容都覆盖到
html()方法:用来获取和设置元素的HTML内容,这样能完整保留<br>标签的换行结构,不会破坏原有的排版。
测试你的示例输入
输入内容:
Hand knotted in Iran (Persian)<br>Wool on wool<br>3.6m x 2.8m<br>11' 10" x 9' 2"
经过上述代码处理后,输出完全符合你的期望:
3.6m x 2.8m<br>11' 10" x 9' 2"
内容的提问来源于stack exchange,提问作者ob80
相关产品推荐
相关产品推荐

