我正在尝试找出字符串中的数字(仅数字应匹配)。要识别的数字仅是用“ @”括起来的数字
因此在字符串$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']
谢谢。
答案 0 :(得分:1)
您可以改用正向前瞻和捕获组:
@(\d+)(?=@)
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]);
}