我需要一个正则表达式或任何其他方法来在字符串中的数字和字母之间添加空格。
示例:
"E2356" => "E 2356"
"E123-F456" => "E 123-F 456"
我已经找到了能够使用Jc的正则表达式:
(?<=[^0-9])(?=[0-9])
谢谢!
答案 0 :(得分:5)
而不是后视,只需匹配非数字:
[^0-9](?=[0-9])
并替换为&#34; $&amp; &#34 ;.
[^0-9]
子模式将匹配1个字符,该字符不是可以在替换模式中使用$&
(整个匹配的文本)引用的数字。 (?=[0-9])
前瞻将确保其后面有一个数字。
请参阅demo
var re = /[^0-9](?=[0-9])/g;
var str = 'E2356<br/>E123-F456';
var result = str.replace(re, '$& ');
document.write(result);
&#13;
答案 1 :(得分:4)
匹配字母后跟数字的双字符序列,以及字母和数字的捕获组,然后使用String#replace
与$1
和$2
占位符来引用捕获组的内容,中间有空格。
str.replace(/([^0-9])([0-9])/g, '$1 $2')
^^$1^^ ^^$2^
g
标志确保所有事件都被替换。
答案 2 :(得分:1)
使用String#replace
:
'E123-F456'.replace(/([A-Z])(\d)/g, '$1 $2')
// >>> "E 123-F 456"
$1
和$2
是正则表达式中捕获的组,并以空格分隔。表达式假定您只有大写字符。请记住在表达式中添加g
标志以替换每次出现。
答案 3 :(得分:0)
您无法使用正则表达式格式化字符串。 Regex可帮助您验证某个字符串是否遵循表达式描述的语言。
Regex可帮助您捕获不同变量中字符串的某些部分,然后根据需要格式化它们以获得所需的输出。
所以我建议你做这样的事情:
var data = "E2304" ;
var regex = ([^0-9])([0-9]*)/g ;
data.replace(/regex, '$1 $2') ;
答案 4 :(得分:-1)
尝试以下代码
var test = "E123-F456".match(/[a-zA-Z]+|[0-9]+/g);
console.log(test.join(' '));