我需要一个应该读取字符串的正则表达式:
然后用' - '
替换字符串中的空格例如:123 456应替换为123-456。
除了字符串中的数字外,没有任何其他字符。
答案 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
此正则表达式将处理您需要的所有方案,而不限制数字。