如何在JavaScript's正则表达式的帮助下拆分字符串
How to split a string with the help of JavaScript's regex?
我需要将一个字符串拆分为一个或多个子字符串,每个子字符串包含不多于或少于两个点。例如,如果字符串是foo.boo.coo.too"
,那么得到以下数组的正则表达式是什么?: ["foo.boo.coo", "boo.coo.too"]
。我希望有人能回答这个问题——我真的很佩服你,因为我已经编程好几年了,还没有很好地习惯正则表达式来自己解决这个特殊的问题。提前非常感谢你。让我知道你的身份,这样我就可以把你作为我正在创建的程序的贡献者。
RegEx不是这个问题的最佳解决方案,这里讨论了类似的问题:split-a- string -every-3-characters-from-back-javascript
一个好的javascript解决方案是一个像这样的javascript函数
function splitter(text){
var parts = text.split(".");
var times = parts.length - 2;
var values = [];
for(var index = 0; index<times;index++)
{
values.push(parts.slice(index,index+3).join("."));
}
return values;
}
splitter("too.boo.coo.too")
//=> Result tested on Chrome 25+ ["too.boo.coo", "boo.coo.too"]
我希望这对你有帮助
如果你想使用正则表达式试试Lookhead的东西,这可以帮助http://www.regular-expressions.info/lookaround.html
Regex本质上将返回非相交的结果,因此如果您希望从单个Regex中获得"所有匹配" -这是不可能的。
所以基本上你需要找到第一个匹配,然后从下一个位置开始寻找下一个匹配,等等;类似于这里描述的技术regex匹配与c#中的交集(这不是JavaScript,但思想是一样的)
您可以使用以下正则表达式,例如:
(?<=^|'.)((?:[^.]*'.){2}[^.]*?)(?=$|'.)
它确保它以点开始和结束,或者在行开始/行结束,并且在里面包含两个点,并且捕获导致第一次捕获。如果需要,可以用+代替*,以确保点之间至少存在一个符号。
但是您需要了解这种方法对于您正在解决的任务来说确实性能很差,因此可能使用其他方法(如split + for)将是更好的解决方案。
- 需要正则表达式模式的帮助
- 需要您的帮助来获得一个简单的javascript正则表达式
- 需要帮助设计正则表达式来选择'|'和'|'如果第一个'|'后面跟着一个空格
- 需要Javascript正则表达式帮助
- 请帮助我处理正则表达式.JavaScript
- 有人可以帮助解释JavaScript中的这个正则表达式吗?
- Javascript正则表达式帮助,负面展望
- 正则表达式帮助 - 匹配列表中未列出的任何 URL 参数和值
- 正则表达式帮助拆分字符串
- JavaScript正则表达式帮助:匹配0或1次,但不捕获
- Javascript正则表达式,帮助我匹配
- 厚颜无耻的正则表达式帮助:子字符串或匹配字符串的数字部分
- Javascript:请提供正则表达式帮助
- JavaScript 正则表达式帮助 - 限制匹配项数
- JavaScript正则表达式帮助:验证电话号码,但不包括555个号码(匹配这个,但不匹配那个)
- 正则表达式帮助不包含
- 正则表达式:帮助匹配小于 24 的数字
- JavaScript正则表达式帮助
- 一些 Javascript 代码中的正则表达式帮助
- JavaScript正则表达式帮助:文本字符串中以"开头的行;在某某日期,一些其他东西写了"