Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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进行域验证的正则表达式_Javascript_Regex_String - Fatal编程技术网

使用Javascript进行域验证的正则表达式

使用Javascript进行域验证的正则表达式,javascript,regex,string,Javascript,Regex,String,我想创建一个正则表达式来验证域名 我在StackOverflow上搜索了很多,发现它忽略了http和文件夹,只检查域 引用 但由于我不是一个向导,而且我很久以前就放弃了理解Regex,这表明“localhost”并不匹配。问题是当我执行以下代码()时: 它返回true(不应匹配localhost)。为什么? 编辑:出于某种原因,人们认为我希望localhost被识别为域但恰恰相反如果你阅读了这个问题,你会发现它返回的是true,尽管它应该返回false。在你的Regex101中,你输入的是一个

我想创建一个正则表达式来验证域名

我在StackOverflow上搜索了很多,发现它忽略了http和文件夹,只检查域

引用 但由于我不是一个向导,而且我很久以前就放弃了理解Regex,这表明“localhost”并不匹配。问题是当我执行以下代码()时:

它返回true(不应匹配localhost)。为什么?



编辑:出于某种原因,人们认为我希望localhost被识别为域但恰恰相反如果你阅读了这个问题,你会发现它返回的是true,尽管它应该返回false。

在你的Regex101中,你输入的是一个文本regex,而不是一个字符串。因为您的正则表达式是正确的,所以localhost不匹配。然而,在代码中,您使用字符串创建正则表达式(坏主意),这意味着您必须转义每个反斜杠

您可以使用Regexp文本来防止该问题

只需使用带有正斜杠的原始正则表达式,即

var pattern = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/i;
或者只是避开反斜杠:


在Regex101中,输入的是文本regex,而不是字符串。因为您的正则表达式是正确的,所以localhost不匹配。然而,在代码中,您使用字符串创建正则表达式(坏主意),这意味着您必须转义每个反斜杠

您可以使用Regexp文本来防止该问题

只需使用带有正斜杠的原始正则表达式,即

var pattern = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/i;
或者只是避开反斜杠:


在Regex101中,输入的是文本regex,而不是字符串。因为您的正则表达式是正确的,所以localhost不匹配。然而,在代码中,您使用字符串创建正则表达式(坏主意),这意味着您必须转义每个反斜杠

您可以使用Regexp文本来防止该问题

只需使用带有正斜杠的原始正则表达式,即

var pattern = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/i;
或者只是避开反斜杠:


在Regex101中,输入的是文本regex,而不是字符串。因为您的正则表达式是正确的,所以localhost不匹配。然而,在代码中,您使用字符串创建正则表达式(坏主意),这意味着您必须转义每个反斜杠

您可以使用Regexp文本来防止该问题

只需使用带有正斜杠的原始正则表达式,即

var pattern = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/i;
或者只是避开反斜杠:



首先,如果使用字符串定义正则表达式,则需要转义该反斜杠@T.J.Crowder我认为反斜杠是在逃避圆点……更重要的是:这个正则表达式除了英文字母表中的字母A-Z之外,完全无法处理任何其他内容。我们现在有了更具表现力的TLD。我想除了我至少有一个字符、一个点和至少一个字符之外,我不会尝试验证任何东西。当然,对于
localhost
来说,这也会失败,因为
localhost
不是域名。@theonlygusti:在正则表达式中也可以。在字符串文本中,
\.
(因为反斜杠是字符串文本中的一个转义,它转义了点,不需要转义,最终完成了一件事;正则表达式引擎永远看不到该反斜杠)。首先,如果使用字符串定义正则表达式,则需要转义该反斜杠。请尝试:
模式=/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/;
@T.J.Crowder我以为反斜杠是在逃避圆点…更重要的是:这个正则表达式除了英文字母表中的字母A-Z之外,完全无法处理任何其他字符。我们现在有了更具表现力的TLD。我想除了我至少有一个字符、一个圆点和至少一个字符之外,我不会尝试验证任何其他内容。当然,这对于
localhost
也会失败,因为
localhost
不是域名。@theonlygusti:在正则表达式文本中可以。在字符串文本中,
\。
(因为反斜杠是字符串文字中的转义符,它会转义点,而点不需要转义,最终会执行操作;正则表达式引擎永远看不到该反斜杠)。首先,如果使用字符串定义正则表达式,则需要转义该反斜杠。请尝试:
pattern=/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\[a-zA-Z]{2,})+$/;
@T.J.Crowder我以为反斜杠是在逃避圆点…更重要的是:这个正则表达式除了英文字母表中的字母A-Z之外,完全无法处理任何其他字符。我们现在有了更具表现力的TLD。我想除了我至少有一个字符、一个圆点和至少一个字符之外,我不会尝试验证任何其他内容。当然,这对于
localhost
也会失败,因为
localhost
不是域名。@theonlygusti:在正则表达式文本中可以。在字符串文本中,
\。
(因为反斜杠是字符串文字中的转义符,它会转义点,而点不需要转义,最终会执行操作;正则表达式引擎永远看不到该反斜杠)。首先,如果使用字符串定义正则表达式,则需要转义该反斜杠。请尝试:
pattern=/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\[a-zA-Z]{2,})+$/;
@T.J.Crowder我以为反斜杠是在逃避圆点…更重要的是:这个正则表达式除了英文字母表中的字母A-Z之外,完全无法处理任何其他字符。我们现在有了更具表现力的TLD。我想除了我至少有一个字符、一个圆点和至少一个字符之外,我不会尝试验证任何其他内容。当然,这对于
localhost
也会失败,因为
localhost
不是域名。@theonlygusti:在regex文本中可以。在字符串文本中,
\。
(因为反斜杠是所使用的字符串文本中的转义符)