我有一个脚本行:
#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]+)+(.*)$/