Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS字符串:在数字和字母之间添加空格_Javascript_Regex_String - Fatal编程技术网

Javascript JS字符串:在数字和字母之间添加空格

Javascript JS字符串:在数字和字母之间添加空格,javascript,regex,string,Javascript,Regex,String,我需要一个正则表达式或任何其他方法来在字符串中的数字和字母之间添加空格 例如: "E2356" => "E 2356" "E123-F456" => "E 123-F 456" 我已经找到了一个能够实现此功能的正则表达式,但使用Javascript是不可能的: (?<=[^0-9])(?=[0-9]) (?将字母后接数字的两个字符序列与字母和数字的捕获组匹配,然后使用字符串#将替换为$1和$2占位符,以引用捕获组的内容,中间留有空格 str.replace(/([^0-9]

我需要一个正则表达式或任何其他方法来在字符串中的数字和字母之间添加空格

例如:

"E2356" => "E 2356"
"E123-F456" => "E 123-F 456"
我已经找到了一个能够实现此功能的正则表达式,但使用Javascript是不可能的:

(?<=[^0-9])(?=[0-9])

(?将字母后接数字的两个字符序列与字母和数字的捕获组匹配,然后使用
字符串#将
替换为
$1
$2
占位符,以引用捕获组的内容,中间留有空格

str.replace(/([^0-9])([0-9])/g, '$1 $2')
              ^^$1^^  ^^$2^

当然,
g
标志确保所有出现的内容都被替换。

只需匹配非数字,而不是向后看:

[^0-9](?=[0-9])
并替换为“$&”

[^0-9]
子模式将匹配一个字符,该字符不是替换模式中可以引用的数字(
$&
(整个匹配文本)。
(?=[0-9])
前瞻将确保其后面有一个数字

var re=/[^0-9](?=[0-9])/g;
var str='E2356
E123-F456'; 变量结果=str.replace(re,“$&”); 文档.写入(结果);
使用
字符串#替换

'E123-F456'.replace(/([A-Z])(\d)/g, '$1 $2')
// >>> "E 123-F 456"
$1
$2
是从正则表达式中捕获的组,并用空格分隔。表达式假定您只有大写字符。请记住在表达式中添加
g
标志以替换每次出现的组。

请尝试下面的代码

var test = "E123-F456".match(/[a-zA-Z]+|[0-9]+/g);
console.log(test.join(' '));

fiddle

不能使用正则表达式格式化字符串。 正则表达式帮助您验证某个字符串是否遵循表达式描述的语言

Regex帮助您捕获不同变量中字符串的某些部分,然后根据需要对其进行格式化,以获得所需的输出

所以我建议你做这样的事情:

var data = "E2304" ; 
var regex = ([^0-9])([0-9]*)/g ; 
data.replace(/regex, '$1 $2') ; 

这似乎既会破坏连字符,也会在错误的位置放置空格,例如在数字后面跟一个字母之间。您的示例结果是
“E123F456”
。当然可以,但如果您可以只匹配数字,那么向前看有什么好处呢?顺便说一句,现在,
(?对,regexp不能创建或修改字符串,它们只能匹配。然而,通常说“我需要一个regexp来格式化这个字符串”,而实际上的意思是“我需要一个regexp与
replace
或格式化这个字符串的东西一起使用”,而且几乎每个人都理解这个缩写。