Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用RegEx验证js中的hashtag字符串_Javascript_Regex - Fatal编程技术网

Javascript 使用RegEx验证js中的hashtag字符串

Javascript 使用RegEx验证js中的hashtag字符串,javascript,regex,Javascript,Regex,我的应用程序中有一个文本框,人们可以在其中插入他们想与某物关联的标签。 我不是正则表达式向导,所以我四处寻找解决方案,我喜欢这样: /^\w+$/ 对于只包含一个标记的字符串(例如“#something”),它非常有效,但对于 “#some1#some2”, 我正在使用javascript中的.match()函数检查字符串的有效性 我如何编写它以使其适用于以下示例: “#tag1” “#tag1#tag2” “#标记空间#标记空间#numbres456!” 但在这些方面失败了: “#先#”

我的应用程序中有一个文本框,人们可以在其中插入他们想与某物关联的标签。 我不是正则表达式向导,所以我四处寻找解决方案,我喜欢这样:

/^\w+$/

对于只包含一个标记的字符串(例如
“#something”
),它非常有效,但对于
“#some1#some2”
, 我正在使用javascript中的
.match()
函数检查字符串的有效性

我如何编写它以使其适用于以下示例:

  • “#tag1”
  • “#tag1#tag2”
  • “#标记空间#标记空间#numbres456!”
但在这些方面失败了:

  • “#先#”
    -后无字符#

  • “#第一个第二个”
    -第二个短语的“否”

  • “”
    -空

  • “tag”
    -短语上没有

  • “#第二#第一”
    -短语之间没有空格

  • “#this#u has#u a#u in#u it”
    -在短语中有一个#


有什么方法可以做到这一点吗?

稍微更改您的模式,以便任何(a)字字符(
\w
)或数字(
\d
)都可以构成您的标签:

/^#[\w\d]+$/

如果要使用锚定,可以匹配hashtag,然后再匹配,而不是空格或hashtag。然后使用非捕获组(?:

模式可能如下所示:

^#[^#\s]+(?: #[^#\s]+)*$

对于所有投反对票的人,请解释你为什么投反对票,以便改进问题。请像这样尝试
^.[^.\s]+(?:#[^.\s]+)*$
谢谢你的帮助!