我有一个像这样的字符串数组。
var myArray =["pr-1.sq-1.reply-1",
"pr-1.sq-1.fw-1",
"pr-1.sq-1.fw-1.sq-1",
"pr-1.sq-1.fw-1.sq-1.receive-1",
"pr-1.sq-1.fw-1.sq-1.assign-1",
"pr-1.sq-1.fw-1.sq",
"pr-1.sq-1.fw-1.sq.receive-1"
];
我希望通过数组元素并仅返回以下内容:
returningArray = ["pr-1.sq-1.fw-1", "pr-1.sq-1.fw-1.sq"];
注意:字符串末尾的整数值是动态的,可以是任意数字[o-9]。 这是我的代码:
var myRegex = /\b.fw[-*][(1-9)*][^a-z]\b/;
for(var i =0; i<myArray.length; i++){
if(myRegex.test(myArray[i]){
returningArray.push(myArray[i]);
}
}
我的大问题是myRegex
,因为它会返回所有内容。
答案 0 :(得分:0)
您可以尝试使用此正则表达式:
var myRegex = /.fw-[0-9](.\w{0,2})?$/;
'?'
- 括号中的所有字符都是可选的,'$'
- 匹配字符串的结尾。
答案 1 :(得分:0)
由于您只想具体匹配 fw-1 或 fw-1.sq ,我认为您的数据集会比您的数据集更大,更多样化你提供给我们所以我修改了正则表达式以匹配 fw- [0-9] ,然后查找字符串的结尾(用正则表达式中的$表示)或 fw-1 ,然后是 .sq 。此规则类似于($ | .sq $),它告诉regexp 立即匹配行尾或.sq然后行结束。
var myArray =["pr-1.sq-1.reply-1",
"pr-1.sq-1.fw-1",
"pr-1.sq-1.fw-1.sq-1",
"pr-1.sq-1.fw-1.sq-1.receive-1",
"pr-1.sq-1.fw-1.sq-1.assign-1",
"pr-1.sq-1.fw-1.sq",
"pr-1.sq-1.fw-1.sq.receive-1"
];
var returningArray = [];
var myRegex = /\.fw-([1-9])($|\.sq$)/;
for(var i =0; i<myArray.length; i++){
if(myArray[i].match(myRegex)) {
returningArray.push(myArray[i]);
}
}
console.log(returningArray);
答案 2 :(得分:0)
试试这个
/^.+fw-[1-9]+(.[^.-]+)*$/ig