簡體   English   中英

正則表達式匹配單詞與條件

[英]Regex to match words with condition

我有這樣的字符串

var msg = "ATEAM-3121 ATEAM-31 123 ATEAM-32 #finish \n ATEAM-3211 \n ATEAM-51 ATEAM-52 ATEAM-53 12345677 #finish ATEAM-1000";

在上面的字符串中,對於每一行,我想在#finish標簽之前匹配匹配ATEAM- [0-9] *的標簽。 如果任何行沒有#finish,則應忽略所有ATEAM標記。

這是非正則表達式的解決方案

msg = msg.split("\n");
var tickets = [];
msg.forEach(function(val) {
  var ticks = val.split(' ');
  for(var i = ticks.indexOf('#finish'); i >= 0; i-- ) {
    if(ticks[i].match(/^ATEAM-.*$/)) {
      tickets.push(ticks[i]);
    }
  }
});
console.log(tickets);

但是想將它轉換為Regex解決方案,這就是我所嘗試的

msg.match(/(ATEAM-[0-9]*|\#finish)/g);

但它給我的結果就像這個小提琴 ,但它不像預期的那樣。 誰可以幫我這個事?

ATEAM-[0-9]+(?=.*?#finish)

你可以使用lookahead來做到這一點。參見演示。

https://regex101.com/r/uF4oY4/88

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM