尝试匹配@
的每个实例,除非后面跟一个digit
或它本身在js
中。
@(?!\d)
查找所有后跟digit
1@ @1 1 j@ @j @j1 1j@ j1 1j @@1 @
<-不想自己匹配
有什么想法吗?谢谢
答案 0 :(得分:4)
您要删除任何//send otp message
public static function sendMessage($mobile, $message)
{
$message = urlencode($message);
$url = sprintf("http://api.msg91.com/api/v2/sendsms?authkey=%s&mobiles=%s&message=%s&sender=%s&route=%s",
env('MSG91_AUTH_KEY'), $mobile, $message, env('MSG91_SENDER_ID'), env('MSG91_ROUTE'));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
,这些@
不能用空格括起来,也不能后面跟数字。最简单的方法是匹配并捕获用空格括起来的@
,并匹配所有其他@
,但不带数字,然后替换为第1组占位符$1
:
s.replace(/((?:^|\s)@)(?!\S)|@(?!\d)/g, '$1')
请参见regex demo
详细信息
((?:^|\s)@)(?!\S)
-第1组:字符串或空白((?:^|\s)
)的开头,然后是@
,然后是非空白char((?!\S)
,等于(?=\s|$)
,空格或字符串结尾)|
-或@(?!\d)
-不带数字的@
((?!\d)
是负向超前字符,如果在当前位置的右边立即有一个数字,则匹配失败)