正则表达式从井号“#”捕获到下一个空格

时间:2019-04-19 12:49:31

标签: javascript regex

我有一个脚本行:

#type1 this is the text of the note

我尝试过这个bu不适合我锻炼:

^\#([^\s]+)

我看着捕获type,换句话说,我得到的是哈希符号“#”和下一个空格之间的内容(不包括哈希符号“#”),我要捕获的字符串是字母数字字符串。

4 个答案:

答案 0 :(得分:0)

使用Javascript提供的regex功能:

exec_result = /#(\w*)/.exec('#whatever string comes here');

我相信exec_result[1]应该是您想要的字符串。

exec()方法的返回值可以在这里找到: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

答案 1 :(得分:0)

您真的很亲密:

/^\#(\w+)\s/

\ w匹配任何字母或数字(也带有下划线)。而且该空间应该在匹配组之外,因为我想您不想捕获它。

答案 2 :(得分:0)

要获得字母数字匹配(将使您获得type1),可以使用字符类并指定要匹配的内容,而不是[^\s]而不匹配空白字符,例如{{ 1}}。

然后使用否定前瞻断言右边的内容不是非空格字符:

[A-Za-z0-9]

Regex demo

您的比赛在第一个捕获组中。请注意,您不必逃脱^#([A-Za-z0-9]+)(?!\S)

例如,使用不区分大小写的标记\#

/i

如果只想匹配类型,则可以使用:

const regex = /^#([A-Za-z0-9]+)(?!\S)/i;
const str = `#type1 this is the text of the note`;
console.log(str.match(regex)[1]);

Regex demo

^#([a-z]+)[a-z0-9]*(?!\S)

答案 3 :(得分:0)

我知道了。

/^\#([^\s]+)+(.*)$/