Javascript 正则表达式在正则表达式测试程序中工作,但不在模式中工作

Javascript 正则表达式在正则表达式测试程序中工作,但不在模式中工作,javascript,regex,html,Javascript,Regex,Html,这是一个很简单但在我看来很奇怪的问题,我基本上有这个正则表达式,并且输入了一些测试,它们都工作了 (?=^\*)|(?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-\{\}]{1,63}\.?)+(?:[a-zA-Z\{\}]{1,})$) 但当我尝试在html中使用它时,它失败了。但是如果我用javascript测试它,它就可以工作了 我对正则表达式没有太多的了解,所以也许任何人都知道哪里出了问题,或者得到了任何让正则表达式更好的建议,这是受欢迎的。作为一

这是一个很简单但在我看来很奇怪的问题,我基本上有这个正则表达式,并且输入了一些测试,它们都工作了

(?=^\*)|(?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-\{\}]{1,63}\.?)+(?:[a-zA-Z\{\}]{1,})$)

但当我尝试在html中使用它时,它失败了。但是如果我用javascript测试它,它就可以工作了


我对正则表达式没有太多的了解,所以也许任何人都知道哪里出了问题,或者得到了任何让正则表达式更好的建议,这是受欢迎的。

作为一个html属性,模式必须从头到尾匹配所有字符串,这就是为什么
(?=^\*)
无法做到这一点,因为它匹配零个字符

请改用此模式:

\*.*|(?!.{255})(?:[A-Za-z_{}-][\w{}-]{0,62}\.?)+[A-Za-z{}]+

(可以省略锚点,因为它们是隐式的)

作为html属性,模式必须从头到尾匹配所有字符串,这就是为什么
(?=^\*)
无法做到这一点,因为它匹配零个字符

请改用此模式:

\*.*|(?!.{255})(?:[A-Za-z_{}-][\w{}-]{0,62}\.?)+[A-Za-z{}]+

(您可以省略锚点,因为它们是隐式的)

如果没有您的输入,我们将无法帮助您regex101有一个单元测试,其中包含一些可能的匹配项。jfiddle有*.com,这是在regex101中通过但在html中不通过的匹配项之一。它正在传入给定的fiddle。如果没有您的输入,它无法为我传递。我们将无法帮助您regex101有一个包含一些可能匹配项的单元测试。jfiddle有*.com,这是在regex101中传递但在html中不传递的匹配项之一。它正在传递给定的fiddle,但没有传递,因为这似乎解决了问题。只是想知道你是否可以通过让正则表达式工作来帮助我,这样它就可以工作了,但是举例来说,它不是
*
*!com在任何情况下,我都会选择你的答案,因为我现在明白为什么它不起作用了。@jermey:我已经测试了
*
*!com在你的小提琴中,它也可以工作。如果您不想验证这两种情况,请用更明确的内容替换
*
。我希望它们不起作用。基本上,这一部分应该更改,以便正则表达式可以这样说:字符串的开头可以是一个
*
,但其余部分仍然应该遵循我最初发布的
\*.*.
中的当前正则表达式,而不是它现在所说的内容。如果它以
*
开头,则忽略整个regex@jermey:我明白了。在这种情况下,试着像这样改变你的模式:
(?!.{255})(?:**(?:**)?(?:[A-Za-z{}-][\w{}-]{0,62}.?)+[A-Za-z{}+
,它允许一个
*
或所有子模式以可选的
*.
开头(如果你不需要这个点,用
(?:*.
)替换
)谢谢你。这让我明白了我在正则表达式方面是多么无助。当我有时间的时候,我需要找一个指导和练习(这似乎解决了这个问题。只是想知道你是否可以帮助我,让正则表达式工作,这样它就可以工作了。
*.com
,但例如,它不工作。
*
*!com!
。无论如何,我会选择你的答案,因为我现在明白为什么它不工作了。@jermey:我已经测试了
*
*!com!
。)你的小提琴也可以。如果你不想验证这两种情况,用更明确的东西替换
*
。我希望它们不起作用。基本上这部分
\*.*.
应该更改,所以正则表达式会这样说:字符串的开头可以是
*
,但其余部分仍然应该遵循当前的规则我的原始帖子中的regex-
\*.*.
而不是它现在所说的内容。如果它以
*
开头,则忽略整个regex@jermey:我明白了。在这种情况下,试着像这样改变你的模式:
(?!。{255})(?:\*.(?:\*.-)(?:[A-Za-z{}-][\w{}-]{0,62}.?)+[A-Za-z{}+]
允许一个
*
或所有子模式以可选的
*。
(如果你不需要点,用
(?:\*\)?
替换
(?:\*)?
)谢谢你,它工作得很好。这说明了我在正则表达式方面是多么无助。我有时间的时候需要去找一个教程来练习一下(