示例:#hello world# 匹配##之间的内容,如果没有#结尾,则匹配#与空格之间的。例如: #hello world#,则提取hellow world,但如果是:#hello world,则提取hello,英文空格真讨厌。
我目前想到的是笨方法,/(#(.+?)#)|(#(.+)\s)/
re = /#(.*)[\s#]/
javascript 没有反向预查找,/\#\w+(?=\#\s)/
再用replace(/^\#/)
把首个#替换掉
但如果是#hello world##,匹配的结果是 hello world#,但实际上要的是hello world /#(.*)[\s#]/.test(’#hello world again again’),结果匹配的是hello world again,应该是匹配hello
反向可以用XRegExp,但感觉你这个反而复杂了
(?:#(.+)#)|(?:#([^\s]+)) 试试吧 似乎你说的好像都可以.
谢,不过如果有两个##的话,还是不对
/(?:#(.+)#)|(?:#([^\s]+))/.test("#hello world##") console.log(RegExp.$1)
理想结果是匹配 hello world,但实际上是匹配 hello world#
@romboo #((?:([^#]+?)#)|(?:([^#\s]+))) 哈哈 那你再试试这个.
/#(.+?(?=#)|\S+)/
/(?:#(\w+(?:(?=\s+\w+\#)|(?=\#))))/
只能做到这一步了:
1.matches集的第二个才是提取的字母
2.不支持全局匹配,即是只支持单条匹配