【问题标题】:How to replace last occurrence of characters in a string using javascript如何使用javascript替换字符串中最后出现的字符
【发布时间】:2011-04-19 06:32:51
【问题描述】:

我在找出如何用 ' 和 ' 替换字符串中的最后一个 ', ' 时遇到问题:

有这个字符串: 测试1,测试2,测试3

我想结束: 测试1、测试2和测试3

我正在尝试这样的事情:

var dialog = 'test1, test2, test3';    
dialog = dialog.replace(new RegExp(', /g').lastIndex, ' and ');

但它不起作用

【问题讨论】:

    标签: javascript regex replace


    【解决方案1】:
    result = dialog.replace(/,\s(\w+)$/, " and $1");
    

    $1 指的是匹配的第一个捕获组(\w+)

    【讨论】:

    • 这对于像'test-1,test-2,test-3'这样的字符串会失败,但我再次相信OP可以自己做出这样的调整。
    【解决方案2】:
    foo.replace(/,([^,]*)$/, ' and $1')
    

    使用$行尾)锚来确定您的位置,并在逗号索引右侧查找不包含任何其他逗号的模式。

    编辑:

    以上内容完全符合定义的要求(尽管替换字符串是任意松散的),但基于 cmets 的批评,以下内容更好地反映了原始要求的精神。

    console.log( 
       'test1, test2, test3'.replace(/,\s([^,]+)$/, ' and $1') 
    )

    【讨论】:

    • +1,可能比使用 \w 更好,因为它更具包容性,例如:jsbin.com/utedu/2
    • 这也匹配test1, test2,并为其生成test1, test2 and 。它还为原始输入字符串插入了一个多余的空格字符,因为它忘记匹配, 之后的空格字符。
    • @splash - 见编辑。如果要求比表达的更详细,我非常有信心 OP 可以自己进行修改,我不想对人们的真正意思做出假设。
    • 我收到Error: unexpected '/' in "foo.replace(/"
    • 我已经根据 regex101 网站上的这个答案制作了一个示例 regex
    【解决方案3】:

    正则表达式搜索模式 \s([^,]+)$

    Line1: If not, sdsdsdsdsa sas ., sad, whaterver4
    Line2: If not, fs  sadXD sad ,  ,sadXYZ!X
    Line3: If not d,,sds,, sasa sd a, sds, 23233
    

    搜索模式发现 Line1:whaterver4 3号线:​​23233

    但没有找到 Line2:sadXYZ!X
    只缺少一个空格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 2011-07-26
      • 1970-01-01
      • 2019-10-13
      相关资源
      最近更新 更多