Regex 使用正则表达式解析字符串

Regex 使用正则表达式解析字符串,regex,typescript,regex-greedy,Regex,Typescript,Regex Greedy,我需要解析一个格式为的输入字符串 AB~11111、AB~22222、AB~33333、AB~44444 分成不同的字符串: AB~11111,AB~22222,AB~33333和AB~44444 这是我尝试的正则表达式: range = "([^~,\n]+~[^,]+,)?"; non_delimiter = "[^,\n;]+"; range_regex = new RegExp(this.range + this.non_delimiter, 'g'); 但不知何故,这个正则表达式只会

我需要解析一个格式为的输入字符串

AB~11111、AB~22222、AB~33333、AB~44444

分成不同的字符串:

AB~11111
AB~22222
AB~33333
AB~44444

这是我尝试的正则表达式:

range = "([^~,\n]+~[^,]+,)?";
non_delimiter = "[^,\n;]+";
range_regex = new RegExp(this.range + this.non_delimiter, 'g');
但不知何故,这个正则表达式只会将输入字符串解析为

AB~11111、AB~22222和
AB~33333、AB~44444


而不是将输入字符串解析为单个字符串

您应该在
,\s*
上使用正则表达式拆分:

var input=“AB~11111,AB~22222,AB~33333,AB~44444”;
var parts=input.split(/,\s*/);

控制台日志(部件)您应该在
,\s*
上使用正则表达式拆分:

var input=“AB~11111,AB~22222,AB~33333,AB~44444”;
var parts=input.split(/,\s*/);

控制台日志(部件)这可能是缺少了船,但是从您的输入来看,类似于:

AB~\d+
[A-Z]{2}~\d+
这应该与上面的每个字符串匹配:。如果有变化(即,它可以是其他字母),那么可能类似于:

AB~\d+
[A-Z]{2}~\d+
或者不管它需要什么,但是使用否定字符类似乎是一种非常迂回的方法。如果是这样的话,你可以:

[^ ,]+

也许这是错过了机会,但从您的输入来看:

AB~\d+
[A-Z]{2}~\d+
这应该与上面的每个字符串匹配:。如果有变化(即,它可以是其他字母),那么可能类似于:

AB~\d+
[A-Z]{2}~\d+
或者不管它需要什么,但是使用否定字符类似乎是一种非常迂回的方法。如果是这样的话,你可以:

[^ ,]+

您使用的是什么编程语言?@TimBiegeleisen TypeScript您使用的是什么编程语言?@TimBiegeleisen TypeScript不幸的是,我不能这么做,因为它还需要确保输入字符串的格式为AB~11111。@Leila您应该单独检查格式,q.v.我的更新答案使用字符串
test
来执行此操作。不幸的是,我不能这样做,因为它还需要确保输入字符串的格式为AB~11111。@Leila您应该单独检查格式,问:我的最新答案是使用字符串
测试
。如果总是有五位数字,你也可以将
\d+
更改为
\d{5}
。如果总是有五位数字,你也可以将
\d+
更改为
\d{5}