【问题标题】:Escape a white space character using Javascript使用 Javascript 转义空格字符
【发布时间】:2009-11-09 22:08:59
【问题描述】:

我有以下 jquery 语句。我希望删除空格,如下所示。所以如果我有这样的词:

例如

  • #Operating/System我想要 最终结果向我展示 #Operating\/System。 (即与 转义序列)。


  • 但是如果我有#Operating/System test 那么我想显示 #Operating\/System + 转义 空间的顺序。 .replace(/ /,'') 部分不正确,但 .replace("/","\\/") 有效 也符合我的要求。

请帮忙!

$("#word" + lbl.eq(i).text().replace("/","\\/").replace(/ /,'')).hide();

【问题讨论】:

  • 很高兴您的说明正确无误,但您应该刚刚更新了其他问题:stackoverflow.com/questions/1703529/…
  • 好吧。我将在那里标记答案以供将来参考。但这是一个新问题。谢谢你帮助我!
  • 我会(暂时)说你试图做错误的事情(或者以错误的方式做正确的事情,这同样糟糕)。 为什么要转义字符串中的某些字符?
  • 我想他想动态地使用页面上的文本作为 jQuery 的选择器。我同意这有几个潜在的问题。
  • 好吧,我正在动态读取一个包含斜杠和空格的 id (asp.net),然后用这些值隐藏那些特定的选择器。

标签: javascript jquery regex


【解决方案1】:
$( "#word" + lbl.eq(i).text().replace(/([ /])/g, '\\$1') ).hide();

这匹配字符串中的所有空格和斜杠(并将相应的字符保存在组$1中):

/([ /])/g

替换为

'\\$1'

表示反斜杠加上$1 组中的原始字符。

"#Operating/System test".replace(/([ /])/g, '\\$1');
-->
"#Operating\/System\ test"

附带优势 - 只需一次调用 replace()

编辑:根据 OP 的要求,对正则表达式 /([ /])/g 进行简短说明。分解如下:

/ # 正则表达式文字的开始 ( # 匹配组开始 $1 [ /] # 一个字符类(空格和斜杠) ) # 组结束 $1 /g # 正则表达式文字结束 + "global" 修饰符

当与上述replace() 一起使用时,所有空格和斜杠都将替换为自身,前面是反斜杠。

【讨论】:

  • 这很好用,所以任何带有空格的“操作系统”都可以正常工作,但任何带有 SLASHES 的东西都可以。 “操作系统/系统”或“操作系统/系统测试”不起作用。另外,如果您能解释这个 replace(/([ /])/g, '\\$1') 语句,我将非常感激,因为我不明白。再次感谢。
  • 我刚刚测试过它——对我来说它也替换了斜杠。你是怎么测试的?
  • 我的代码中没有双引号,这不是偶然的。 ;-) 您应该特别阅读 replace() 上的几行内容以及一般的正则表达式。
  • @Tomalak。感谢您的解释,您是对的,它可以在一次替换空格和斜杠时使用。你已经掌握了这一点。谢谢,谢谢,谢谢......一次又一次。你今天救了我的命!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
相关资源
最近更新 更多