我有一个只包含数字的字符串。像这样:
from("direct:upload-content").to(
"ftp://{{upload.user}}@{{upload.host}}:{{upload.port}}{{upload.dir}}?password={{upload.pass}}&doneFileName=done.txt");
我正在尝试匹配两位或更多位数的升序数字。在上面的字符串中我想要这个输出:
var numb = "5136789431235";
实际上我可以匹配一个有两位或更多位数的数字:var numb = "5136789431235";
// ^^^^ ^^^
,但我不知道怎样才能检测到提升?
答案 0 :(得分:8)
匹配连续数字,例如123
:
(?:(?=01|12|23|34|45|56|67|78|89)\d)+\d
匹配非连续数字,例如137
:
(?:(?=0[1-9]|1[2-9]|2[3-9]|3[4-9]|4[5-9]|5[6-9]|6[7-9]|7[8-9]|89)\d)+\d
以下是一个例子:
var numb = "5136789431235";
/* The output of consecutive version: 6789,123
The output of nonconsecutive version: 136789,1234
*/
答案 1 :(得分:2)
你可以通过简单地测试
来做到这一点01|12|23|34|45|56|67|78|89
此致
答案 2 :(得分:2)
答案 3 :(得分:2)
尝试此选项以匹配连续数字
var matches = [""]; numb.split("").forEach(function(val){
var lastNum = 0;
if ( matches[matches.length-1].length > 0 )
{
lastNum = parseInt(matches[matches.length-1].slice(-1),10);
}
var currentNum = parseInt(val,10);
if ( currentNum == lastNum + 1 )
{
matches[matches.length-1] += String(currentNum);
}
else
{
if ( matches[matches.length-1].length > 1 )
{
matches.push(String(currentNum))
}
else
{ matches[matches.length-1] = String(currentNum);
}
}
});
matches = matches.filter(function(val){ return val.length > 1 }) //outputs ["6789", "123"]
<强>样本强>
var numb = "5136789431235";
var matches = [""]; numb.split("").forEach(function(val){
var lastNum = 0;
if ( matches[matches.length-1].length > 0 )
{
lastNum = parseInt(matches[matches.length-1].slice(-1),10);
}
var currentNum = parseInt(val,10);
if ( currentNum == lastNum + 1 )
{
matches[matches.length-1] += String(currentNum);
}
else
{
if ( matches[matches.length-1].length > 1 )
{
matches.push(String(currentNum))
}
else
{ matches[matches.length-1] = String(currentNum);
}
}
});
matches = matches.filter(function(val){ return val.length > 1 }) //outputs ["6789", "123"]
document.body.innerHTML += JSON.stringify(matches,0,4);
答案 4 :(得分:1)
你必须使用正则表达式吗?
不确定是否效率最高,但由于它们总是数字,你可以将它们分成数组,然后对其进行算法进行排序吗?
所以喜欢
var str = "123456";
var res = str.split("");
// res would equal 1,2,3,4,5,6
// Here do matching algorithm
不确定这是否是一种不好的方式,只是另一种思考
的选择答案 5 :(得分:1)
我使用子字符串方法在 jquery.pwstrength.bootstrap 插件的分支上做了一些不同的事情。
我创建了一个包含序列的字符串(&#34; 123456789&#34;)并在大小为3的滑动窗口上扫描序列。
在每次扫描迭代中,我检查字符串上窗口的子字符串:
var numb = "5136789431235";
//check for substring on 1st window => "123""
"5136789431235"
ˆˆˆ