如何知道字符串是否结束RegularExpresion javascript

时间:2015-07-22 10:06:45

标签: javascript regex

我有一个像这样的字符串数组。

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,因为它会返回所有内容。

3 个答案:

答案 0 :(得分:0)

您可以尝试使用此正则表达式:

var myRegex = /.fw-[0-9](.\w{0,2})?$/;

'?' - 括号中的所有字符都是可选的,'$' - 匹配字符串的结尾。

演示: http://jsfiddle.net/3jhzzqva/

答案 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