Javascript正则表达式从url获取5个字符

Javascript正则表达式从url获取5个字符,javascript,regex,Javascript,Regex,如何编写正则表达式从下面的url获取5个字符572f0 我构建的正则表达式是dep\u id=([^&]*),但这假设在值之后有一个&并且我希望始终匹配并检索dep\u id= 572f0&org\u id=00Df0&如果要匹配5个字符: /dep_id=(.....)/ 或 如果要匹配到结束(&O),请执行以下操作: /dep_id=([^&]+)/ 您的初始正则表达式实际上是完全有效的:它不需要遵循&。如果您想匹配5个字符,则需要使用所有字符,直到a&或结束…: /dep_id

如何编写正则表达式从下面的url获取5个字符572f0

我构建的正则表达式是dep\u id=([^&]*),但这假设在值之后有一个&并且我希望始终匹配并检索dep\u id=


572f0&org\u id=00Df0&

如果要匹配5个字符:

/dep_id=(.....)/

如果要匹配到结束(&O),请执行以下操作:

/dep_id=([^&]+)/

您的初始正则表达式实际上是完全有效的:它不需要遵循
&
。如果您想匹配5个字符,则需要使用所有字符,直到a
&
或结束…

/dep_id=(.....)/

如果要匹配到结束(&O),请执行以下操作:

/dep_id=([^&]+)/
您的初始正则表达式实际上是完全有效的:它不需要遵循
&
。它需要所有的东西直到一个
&
或结束…

不是正则表达式,而是

var x = "https://test.com/Chat/test?language=en_US#dep_id=572f0&org_id=00Df0&"
x.split("dep_id=")[1].substr(0,5)
不是正则表达式,而是

var x = "https://test.com/Chat/test?language=en_US#dep_id=572f0&org_id=00Df0&"
x.split("dep_id=")[1].substr(0,5)

要直接检索五个字符,请使用以下命令:

var myregex = /dep_id=([^#&\s]{5})/m;
var match = myregex.exec(str);
if (match != null) {
    result = match[1];
} else {
    result = "";
}
解释

  • dep\u id=
    匹配文字字符
  • ([^#和\s]{5})
    捕获到第1组的五个字符,它们不是
    &
    、url片段分隔符
    或空白

这将直接从组1捕获中检索字符

要直接检索五个字符,请使用以下命令:

var myregex = /dep_id=([^#&\s]{5})/m;
var match = myregex.exec(str);
if (match != null) {
    result = match[1];
} else {
    result = "";
}
解释

  • dep\u id=
    匹配文字字符
  • ([^#和\s]{5})
    捕获到第1组的五个字符,它们不是
    &
    、url片段分隔符
    或空白


这将直接从组1捕获中检索字符

dep_id=(.{5})
dep_id=(.{5})
一个重要的注意事项:此解决方案依赖于字符串中是否存在
dep_id=
,否则会出现错误。@zerkms,这是正确的,但添加错误处理将是微不足道的。@Adam:确实如此,但它会使代码膨胀,这将使正则表达式成为“更好”的解决方案。顺便说一句,如果
dep_id
参数值短于5个字符,我们也不清楚该怎么办。使用regex很容易处理。有了这段代码-就不会了。一个重要的注意事项是:此解决方案依赖于字符串中是否存在
dep_id=
,否则会出错。@zerkms,这是正确的,但添加错误处理将是微不足道的。@Adam:的确如此,但它会使代码膨胀,这将使正则表达式变得“更好”解决方案。顺便说一句,如果
dep_id
参数值短于5个字符,我们也不清楚该怎么办。使用regex很容易处理。对于这段代码-它不会是。第二个括号中的字符串有什么用途?(?:&|$)@AndrewShepherd,实际上,它没有用,OP的第一个正则表达式是完全有效的,他认为它需要一个
&
的假设是不正确的。@AndrewShepherd,它是一个非捕获组@亚当:我肯定安德鲁问的是它的目的,而不是它的句法意义:-)这很有效。在dep_id=(.{5})上方的评论中发布了较短的版本。第二个括号中的字符串有什么用途?(?:&|$)@AndrewShepherd,实际上,它没有用,OP的第一个正则表达式是完全有效的,他认为它需要一个
&
的假设是不正确的。@AndrewShepherd,它是一个非捕获组@亚当:我肯定安德鲁问的是它的目的,而不是它的句法意义:-)这很有效。较短的版本发布在dep_id=(.{5})上方的一条评论中,我在这一天对rep进行了限制,所以我只是在观察+1用于编辑。@hwnd
[^#和\s]
的原因是,如果我们只取
{5}
,我们可能会开始吃另一个
&…
,或一个url片段
.
,或超过url的结尾。@hwnd我听说了。。。我并不总是100%相信问题描述,所以
[^#&\s]
对我来说很有用。:)我今天的代表名额有限,所以我只是在观察+1用于编辑。@hwnd
[^#和\s]
的原因是,如果我们只取
{5}
,我们可能会开始吃另一个
&…
,或一个url片段
.
,或超过url的结尾。@hwnd我听说了。。。我并不总是100%相信问题描述,所以
[^#&\s]
对我来说很有用。:)