代码之家  ›  专栏  ›  技术社区  ›  BuddyJoe

javascript/jquery从节点的text()值中删除字符160-regex

  •  4
  • BuddyJoe  · 技术社区  · 14 年前
    $('#customerAddress').text().replace(/\xA0/,"").replace(/\s+/," ");
    

    在一个范围(i d=customeraddress)中寻找值,我想将所有的空白部分缩减为一个空白。除了这个应用程序外,/\s+/who还能工作,在街道地址和州/邮编之间有160个字符 写这篇文章的更好方法是什么?这目前不起作用。

    更新 : 我已经知道了

    $('.customerAddress').text().replace(/\s+/g," ");
    

    清理160年代和空间。 但是我该怎么写一个正则表达式才能在16世纪后继续呢?

    $('.customerAddress').text().replace(String.fromCharCode(160)," ");
    

    甚至都没用。

    注意:我在firefox/firebug中测试

    3 回复  |  直到 14 年前
        1
  •  9
  •   Gumbo    14 年前

    \s does already contain the character U+00A0 :

    [\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]
    

    但是你应该加上 G 要全局替换的修饰符:

    $('#customerAddress').text().replace(/\s+/g, " ")
    

    否则只替换第一个匹配项。

        2
  •  11
  •   Mark Porter    14 年前

    关于替换char 160,您忘记了创建全局regex,所以只替换第一个匹配项。试试这个:

    $('.customerAddress').text()
        .replace(new RegExp(String.fromCharCode(160),"g")," ");
    

    或者更简单一点,在你的问题中使用十六进制的例子

    $('.customerAddress').text().replace(/\xA0/g," ");
    
        3
  •  0
  •   Rafael Almeida Andre Goncalves    14 年前

    抱歉,如果我很明显(或错误),但调用w/o参数时.text()不只是返回文本吗?我的意思是,我不知道你是否包含了完整的代码或只是一个摘录,但要真正替换SPAN,你应该这样做:

    var t = $('#customerAddress').text().replace(/\xA0/,"").replace(/\s+/," ");
    $('#customerAddress').text(t);
    

    除此之外,用于折叠空格的regex似乎还可以,我只是不确定您的不可打印字符的语法。