正则表达式从哈希符号捕获"#"到下一个空格



我有一个脚本行:

#type1 this is the text of the note

试过这个bu没有为我工作:

^#([^s]+)

我观察以捕获type换句话说,我以获取哈希符号"#"和下一个空格之间的内容,不包括哈希"#"符号,而我要捕获的字符串是字母数字字符串。

使用 Javascript 提供的正则表达式功能:

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

你真的很接近:

/^#(w+)s/

\w 匹配任何字母或数字(以及下划线(。空间应该在匹配组之外,因为我想你不想捕获它。

要获得字母数字匹配(这将使您获得 type1(,而不是与不与空格字符匹配的否定字符类[^s],您可以使用字符类并指定要匹配的内容,如 [A-Za-z0-9] .

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

^#([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]);

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

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

正则表达式演示

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

我已经想通了。

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

最新更新