Javascript中的正则表达式,无需查找即可找到由@包围的数字

时间:2018-11-26 14:52:52

标签: javascript regex regex-lookarounds

我正在尝试找出字符串中的数字(仅数字应匹配)。要识别的数字仅是用“ @”括起来的数字

因此在字符串$groupName = $_POST["groupName"]; $user_id = $_SESSION["id"]; $stack = array(); $sql = "SELECT phone FROM SMAILY_groups_numbers t1 INNER JOIN SMAILY_groups t2 ON t1.group_id = t2.group_id WHERE t2.user_id = '".$user_id."' AND t2.group_name = '".$group_name."'"; $result = mysqli_query($link, $sql); while($row = $result->fetch_array(MYSQLI_ASSOC)) { array_push($stack, $row["phone"]); } $stack = json_encode($stack); $result->free(); 中,仅应检索'@432432@Hi@534543534@'432432

我尝试了一个正则表达式,但是它使用了JavaScript背后不支持的外观(特别是在Firefox中)。因此正在寻找兼容的模式。

我使用的是以下内容:-

534543534

//列表为['432432','534543534']

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以改用正向前瞻和捕获组:

@(\d+)(?=@)

Regex demo

const regex = /@(\d+)(?=@)/g;
const str = `@432432@Hi@534543534@`
let m;

while ((m = regex.exec(str)) !== null) {
  if (m.index === regex.lastIndex) {
    regex.lastIndex++;
  }
  console.log(m[1]);
}