Can';无法正确测试javascript正则表达式

Can';无法正确测试javascript正则表达式,javascript,regex,Javascript,Regex,大家好,我有以下无法在JavaScript上接受的Regx if ($(caller).attr('value').toString().search('/(?=\D*\d\D*\d).{8,15}/g') == -1) 在哪里 $(caller).attr('value').toString() = "fdsddfsd45" 它返回给我-1 我也试着从模式上测试它 if (!pattern.test($(caller).attr('value'))) { 在哪里 它返回给我false

大家好,我有以下无法在JavaScript上接受的Regx

if ($(caller).attr('value').toString().search('/(?=\D*\d\D*\d).{8,15}/g') == -1)
在哪里

$(caller).attr('value').toString() = "fdsddfsd45"
它返回给我-1

我也试着从模式上测试它

  if (!pattern.test($(caller).attr('value'))) {
在哪里

它返回给我false

$(caller).attr('value').toString() = "fdsddfsd45"

当我试图通过名为RegExr的桌面应用程序测试它时,这个字符串“fdsddfsd45”与表达式(?=\D*\D\D*\D)匹配。{8,15}这是我不知道的JavaScript错误吗?

在JavaScript中,regex应该是字符串或regex文本。在您的情况下,这应该可以做到:

.search(/(?=\D*\d\D*\d).{8,15}/) == -1
注意,我删除了单引号。我还删除了
/g
标志-因为您正在搜索任何匹配项,所以不需要它

为了完整性,虽然它不太有用,但您可以将正则表达式编写为字符串,但必须避开所有反斜杠,否则JavaScript将在它到达正则表达式之前将
\d
解析为
d
。在这种情况下,您不需要斜杠(例如,与PHP不同,PHP同时使用这两种斜杠):


示例:

在JavaScript中,正则表达式应该是字符串或正则表达式文本。在您的情况下,这应该可以做到:

.search(/(?=\D*\d\D*\d).{8,15}/) == -1
注意,我删除了单引号。我还删除了
/g
标志-因为您正在搜索任何匹配项,所以不需要它

为了完整性,虽然它不太有用,但您可以将正则表达式编写为字符串,但必须避开所有反斜杠,否则JavaScript将在它到达正则表达式之前将
\d
解析为
d
。在这种情况下,您不需要斜杠(例如,与PHP不同,PHP同时使用这两种斜杠):

例如:

将返回0,请注意“'”字符

将返回真实

将返回0,请注意“'”字符


将返回真实

如果可以的话,你在查什么?看起来您正在测试字符串是否至少有8个字符长,并且有两个数字。正则表达式似乎是错误的,或者至少过于复杂。你能描述一下你想做什么吗?最后一个注意事项-你没有说清楚你在做什么,但你可能忘记了开始和结束锚定:
^…$
如果可以的话,你在检查什么?看起来您正在测试字符串是否至少有8个字符长,并且有两个数字。正则表达式似乎是错误的,或者至少过于复杂。你能描述一下你想做什么吗?最后一个注意事项-您没有确切说明您正在做什么,但您可能忘记了开始和结束锚定:
^…$
s.search('(?=\\D*\\d\\D*\\d).{8,15}')
"fdsddfsd45".search(/^(?=\D*\d\D*\d).{8,15}$/g)
/^(?=\D*\d\D*\d).{8,15}$/.test("fdsddfsd45")