【发布时间】:2021-06-27 19:36:19
【问题描述】:
我有这个用于检测@xxx 的正则表达式
/(?:@)(.*[a-zA-Z0-9]*)/
即使@xxx 没有与左侧的另一个字符串分隔(当它在输入行的中间键入时),它也会匹配。
xxx@xxx 也会匹配,所以我在开头添加了 \s 以要求空格。现在是
/\s(?:@)(.*[a-zA-Z0-9]*)/
但问题是在行首输入@xxx 时不匹配(仍然需要空格),在这种情况下我需要匹配。
我试图从https://stackoverflow.com/a/19973707/170592 中获得灵感,所以我在正则表达式的开头添加了 ^[^-\s] 来实现它
/^[^-\s](?:@)(.*[a-zA-Z0-9]*)/
但它也没有用。
【问题讨论】:
-
如果要匹配行首或空格,请使用
/(?:^|\s)@(.*)/gm。注意[a-zA-Z0-9]*在.*之后没有意义。查看更多here。 -
是,或
(?<!\S)@(.*)或(?<!\S)@[a-zA-Z0-9]+仅匹配字符类中的字符。 -
感谢它所做的一切
标签: javascript regex