【问题标题】:How to remove digits and text from the end of a string in Javascript如何从Javascript中的字符串末尾删除数字和文本
【发布时间】:2009-07-10 05:32:25
【问题描述】:

我需要从 javascript 中的字符串末尾删除以下格式

1234, Australia

而且只在字符串的末尾。

我该怎么做?

【问题讨论】:

  • 你能再解释一下吗。您的意思是您需要从字符串中删除一个 4 位数字、后跟一个逗号、后跟一个国家/地区吗?字符串总是固定长度吗?也就是4位代码是不是总是从同一个位置开始的?
  • 嗯,你有一个像“some-long-string 1234, Australia”这样的字符串,你想从最后一个删除这个“1234,Australia”,对吗?
  • 是的,你是正确的 Kirtan,显然 1234 可以是任何 4 位数字。

标签: javascript regex


【解决方案1】:

好的,所以我发现我做错了什么......

var a = '888 Welles St, Scoresby Victoria 3179, Australia'.replace('/\d{4}, Australia/', '');
alert(a);

我用引号包围了正则表达式模式。它显然不需要。所以这行得通:

var a = '888 Welles St, Scoresby Victoria 3179, Australia'.replace(/\d{4}, Australia/, ''); 
alert(a);

【讨论】:

  • 如果你想确保 "xxxx, Australia" 只在字符串末尾匹配,你必须在 "Australia" 后面添加一个美元符号:/\d {4},澳大利亚$/
  • 如果单词“Australia”(“AustraLIA”、“australia”等)的不同大小写出现在您的文本中,您还需要将 /i 开关添加到您的正则表达式中。跨度>
【解决方案2】:

您的解决方案很好。
我会添加$,以免无意中替换任何内容:

a = strVar.replace((/\d{4}, \w+$/,'');

来自here的解释:

/and$/ 匹配“land”中的“and”,但不匹配 “着陆”

你甚至可以通过添加单词边界来变得更疯狂:

a = strVar.replace((/\d{4}, \b\w+\b$/,'');

【讨论】:

  • 据我所知,您的第二个正则表达式中的单词边界是无用的。 \w 后面的空格已经暗示了一个单词边界。 \w 后跟 $ 也是如此。
  • @Geert,你说得对。我添加了单词边界以演示一种使此正则表达式在更一般情况下有用的可能方法。就目前而言,正则表达式并不是特别擅长处理不同的输入——OP 当然理解这一点,因为他仅将它用于这种特殊情况。非常感谢您的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多