【问题标题】:No white space at beginning + allow space in the middle [duplicate]开头没有空格+中间允许空格[重复]
【发布时间】: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


【解决方案1】:

我认为您要查找的是/\S+/,这意味着检查任何非空格,我认为您不需要开头的 ^。

[-\S+](?:@)(.*[a-zA-Z0-9]*)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-14
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多