javascript正则表达式用连字符替换空格

时间:2015-04-01 06:34:15

标签: javascript regex string replace

我需要一个应该读取字符串的正则表达式:

  1. 1到无限数量(比如10个)
  2. 读取
  3. 之间的空格
  4. 带有1到不受限制的数字(比如最多10个)
  5. 然后用' - '

    替换字符串中的空格

    例如:123 456应替换为123-456。

    除了字符串中的数字外,没有任何其他字符。

4 个答案:

答案 0 :(得分:1)

试试这个:

'123 456'.replace(/ /g, '-')
// "123-456"

如果只需要在符合“(数字)(空格)(数字)”模式的字符串中替换空格 - 请使用前瞻。不幸的是,JS不支持lookbehinds:

'123 456'.replace(/(^\d+) (?=\d+$)/, "\$1-")
// "123-456"

'A123 456'.replace(/(^\d+) (?=\d+$)/, "\$1-")
// "A123 456"

'123 456 324'.replace(/(^\d+) (?=\d+$)/, "\$1-")
// "123 456 324"

在字符串中使用模式:

 "Shop U5, 124 134 Millers Road".replace(/(\b\d+) (?=\d+\b)/, "\$1-")
 // "Shop U5, 124-134 Millers Road"

 "124 134 Millers Road".replace(/(\b\d+) (?=\d+\b)/, "\$1-")
 // "124-134 Millers Road"

 "124 134".replace(/(\b\d+) (?=\d+\b)/, "\$1-")
 // "124-134"

答案 1 :(得分:0)

您似乎在寻找名为backreferences的内容。

当您的搜索字符串为:

"([0-9]{1,10}) ([0-9]{1,10})"

您的替换字符串将类似于:

"\1-\2"

要仅匹配模式与模式匹配的行,请添加line anchors“^”(行首)和“$”(行尾),以便您的模式如下所示:

"^([0-9]{1,10}) ([0-9]{1,10})$"

答案 2 :(得分:0)

var str   = 'Shop U5, 124 134 Millers Road';
var regex = /(.*\d{1,10})\s(\d{1,10}.*)/;

if (str.match(regex)) {
    str = str.replace(regex, "$1" + "-" + "$2");
}

alert(str)

输出:

'Shop U5, 124-134 Millers Road'

答案 3 :(得分:0)

var str = "123 456 7891 2";
var regex = /(\d+)\s(\d+)/g;
while( str.match(regex) ) { 
    str = str.replace(regex, "$1-$2");
}
alert(str); // Result 123-456-7891-2

此正则表达式将处理您需要的所有方案,而不限制数字。