正则表达式匹配字符的所有实例,除非后面跟数字或它本身

时间:2018-12-16 10:00:14

标签: javascript regex regex-negation

尝试匹配@的每个实例,除非后面跟一个digit或它本身在js中。

@(?!\d)查找所有后跟digit

1@ @1 1 j@ @j @j1 1j@ j1 1j @@1 @ <-不想自己匹配


Regex demo

有什么想法吗?谢谢

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)是负向超前字符,如果在当前位置的右边立即有一个数字,则匹配失败)