Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 - Fatal编程技术网

Javascript [^\/:]|正则表达式改进的逆运算

Javascript [^\/:]|正则表达式改进的逆运算,javascript,regex,Javascript,Regex,这个字符集 [^\/:] // all characters except / or : 根据jslint b.c.弱。我应该指定可以使用的字符,而不是根据此指定不能使用的字符 这适用于一个简单的非生产级域测试仪,如下所示: domain: /:\/\/(www\.)?([^\/:]+)/, 我只是想知道如何思考这个问题。这篇文章提到允许大量的Unicode字符不是一件好事……我该如何制定一个计划来更好地编写它呢 我不关心我的域检查器的完整性,它只是一个原型……我关心的是如何

这个字符集

[^\/:] // all characters except / or :
根据jslint b.c.弱。我应该指定可以使用的字符,而不是根据此指定不能使用的字符

这适用于一个简单的非生产级域测试仪,如下所示:

domain:         /:\/\/(www\.)?([^\/:]+)/,
我只是想知道如何思考这个问题。这篇文章提到允许大量的Unicode字符不是一件好事……我该如何制定一个计划来更好地编写它呢


我不关心我的域检查器的完整性,它只是一个原型……我关心的是如何以不同的方式编写注册表项。

这对谷歌来说是一个很好的问题,你知道。。。但我只是想提醒你:Matthew O'Riordan编写了这样一个正则表达式,mathces可以使用协议,也可以不使用协议

这里是链接到

但为了将来的参考,让我在这里提供本文中的正则表达式:

/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/
正如博客作者马修本人所说:

(
 ( # brackets covering match for protocol (optional) and domain
  ([A-Za-z]{3,9}:(?:\/\/)?)   # match protocol, allow in format http:// or mailto:
  (?:[\-;:&=\+\$,\w]+@)?   # allow something@ for email addresses
  [A-Za-z0-9\.\-]+   # anything looking at all like a domain, non-unicode domains
  | # or instead of above
  (?:www\.|[\-;:&=\+\$,\w]+@) # starting with something@ or www.
  [A-Za-z0-9\.\-]+   # anything looking at all like a domain
 )
 ( # brackets covering match for path, query string and anchor
  (?:\/[\+~%\/\.\w\-]*)  # allow optional /path
  ?\??(?:[\-\+=&;%@\.\w]*)  # allow optional query string starting with ? 
  #?(?:[\.\!\/\\\w]*) # allow optional anchor #anchor 
 )? # make URL suffix optional
)
你的例子怎么样 但是在匹配URL域的情况下,[^\/:]的负数可能是:

[-0-9a-zA-Z_.]
这应该匹配//之后和第一次/之前的所有内容。但是当你的URL不以斜杠结尾时会发生什么呢?在那种情况下你会怎么做


上正则表达式简化只匹配一个字符,就像负数字符集一样。所以这只是替换了你正在使用的完整注册表中的负数集。

这对谷歌来说是一个很好的问题,你知道。。。但我只是想提醒你:Matthew O'Riordan编写了这样一个正则表达式,mathces可以使用协议,也可以不使用协议

这里是链接到

但为了将来的参考,让我在这里提供本文中的正则表达式:

/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/
正如博客作者马修本人所说:

(
 ( # brackets covering match for protocol (optional) and domain
  ([A-Za-z]{3,9}:(?:\/\/)?)   # match protocol, allow in format http:// or mailto:
  (?:[\-;:&=\+\$,\w]+@)?   # allow something@ for email addresses
  [A-Za-z0-9\.\-]+   # anything looking at all like a domain, non-unicode domains
  | # or instead of above
  (?:www\.|[\-;:&=\+\$,\w]+@) # starting with something@ or www.
  [A-Za-z0-9\.\-]+   # anything looking at all like a domain
 )
 ( # brackets covering match for path, query string and anchor
  (?:\/[\+~%\/\.\w\-]*)  # allow optional /path
  ?\??(?:[\-\+=&;%@\.\w]*)  # allow optional query string starting with ? 
  #?(?:[\.\!\/\\\w]*) # allow optional anchor #anchor 
 )? # make URL suffix optional
)
你的例子怎么样 但是在匹配URL域的情况下,[^\/:]的负数可能是:

[-0-9a-zA-Z_.]
这应该匹配//之后和第一次/之前的所有内容。但是当你的URL不以斜杠结尾时会发生什么呢?在那种情况下你会怎么做

上正则表达式简化只匹配一个字符,就像负数字符集一样。因此,这只是替换您正在使用的完整注册表项中的负数集

我应该指定可以使用的字符,而不是不能使用的字符

不,那是胡说八道,只是JSLint就是JSLint

当您在正则表达式中看到[^\/:]时,它所做的事情就很明显了。如果您试图列出所有可能允许的字符,那么生成的正则表达式将非常难以读取,并且很容易意外忘记包含一些字符

如果您有一组特定的允许字符,那么可以列出它们。这比列出所有可能的无效字符更容易、更可靠

但是,如果您有一组特定的无效字符,[^]语法是正确的方法

我应该指定可以使用的字符,而不是不能使用的字符

不,那是胡说八道,只是JSLint就是JSLint

当您在正则表达式中看到[^\/:]时,它所做的事情就很明显了。如果您试图列出所有可能允许的字符,那么生成的正则表达式将非常难以读取,并且很容易意外忘记包含一些字符

如果您有一组特定的允许字符,那么可以列出它们。这比列出所有可能的无效字符更容易、更可靠


但是,如果您有一组特定的无效字符,[^]语法是执行此操作的适当方式。

这里有一个用于字符的正则表达式:

mycharactersarecool[^shouldnothavethesechars](oneoftwooptions|anotheroption)

这就是你所说的吗?

这里有一个用于字符的正则表达式:

mycharactersarecool[^shouldnothavethesechars](oneoftwooptions|anotheroption)
这就是你说的吗?

根据

域名系统中允许的字符集基于ASCII

根据

要命名域,您可以使用任何字母、0到9之间的数字和符号-[只要第一个字符不是-]

考虑到你的域名必须以…结尾,你正在寻找的东西

([a-zA-Z0-9][a-zA-Z0-9-]*\.)+[a-zA-Z0-9][a-zA-Z0-9-]*

域名系统中允许的字符集基于ASCII

根据

要命名域,您可以使用任何字母、0到9之间的数字和符号-[只要第一个字符不是-]

考虑到你的域名必须以…结尾,你正在寻找的东西

([a-zA-Z0-9][a-zA-Z0-9-]*\.)+[a-zA-Z0-9][a-zA-Z0-9-]*

如何将正则表达式表示为可以拥有的字符,而不是将正则表达式表示为不能拥有的字符。。。http://www.foo.com/some_pathinstead 将正则表达式表示为不能具有的字符,如何将正则表达式表示为可以具有的字符。。。http://www.foo.com/some_paththe 坚持jshint的选择不是没有意义的。这是一种偏好……任何一种方式都可以。。。

鉴于我的帖子应该是显而易见的,我想坚持。我想说的是,这个特别的JSLint建议是胡说八道,原因我已经说过了。我没有说所有的JSLint建议都是胡说八道,也没有说使用JSLint的想法是胡说八道。对于您的域名regex,允许的字符列表是可管理的,但您表示我不关心我的域检查器的完整性,它只是一个原型…我关心的是如何以不同的方式编写regex。,所以…选择坚持jshint不是没有意义的…这是一种偏好…任何一种方式都可以…鉴于我的帖子是显而易见的,我想坚持。我说这个特别的JSLint建议是胡说八道,因为我说过的原因。我没有说所有的JSLint建议都是胡说八道,也没有说使用JSLint的想法是胡说八道。对于您的域名regex,允许的字符列表是可管理的,但您表示我不关心我的域检查器的完整性,它只是一个原型…我关心的是如何以不同的方式编写regex。,所以…但我的问题没有抓住重点…我不关心URL检查,但更了解如何指定正则表达式的倒数…好的,提供倒数。。。这个特殊的reg ex没有负集合,只有正集合。如果你有[^012],并且你知道你需要数字,那么这个的否定式是[3456789]。你的情况也是如此。如果您不允许使用斜杠和collon,那么请提供您确实允许使用的字符,例如[-a-z0-9_.]以及可能更多的字符。但是对于你的测试来说,这些可能就足够了。@HiroProgator-如果你的问题的重点不是关于URL检查,那么为什么你接受了一个专注于此的答案,而忽略了反正则表达式的概念?他做了两件事…查找了我需要的字符集…并将其表示为我拥有的字符集的反方向…我一直在想知道无论字符集通常包括Unicode字符,不仅仅是用于域,而且通常包括Unicode字符,我不知道我不知道的是什么,直到那个答案被写下来…如果有人说你需要先了解角色集…这个答案就足够了…这似乎是常识…之前似乎不是这样的…@hiroprogator-我很高兴你得到了一个对你有帮助的答案,但其中的正则表达式并不是你问题中的正则表达式的倒数。即使忽略晦涩的Unicode字符,[^\/:]的倒数也必须列出键盘上的其他标点字符…但我的问题没有抓住重点…我不关心URL检查,但更了解如何指定正则表达式的倒数…我们提供倒数。。。这个特殊的reg ex没有负集合,只有正集合。如果你有[^012],并且你知道你需要数字,那么这个的否定式是[3456789]。你的情况也是如此。如果您不允许使用斜杠和collon,那么请提供您确实允许使用的字符,例如[-a-z0-9_.]以及可能更多的字符。但是对于你的测试来说,这些可能就足够了。@HiroProgator-如果你的问题的重点不是关于URL检查,那么为什么你接受了一个专注于此的答案,而忽略了反正则表达式的概念?他做了两件事…查找了我需要的字符集…并将其表示为我拥有的字符集的反方向…我一直在想知道无论字符集通常包括Unicode字符,不仅仅是用于域,而且通常包括Unicode字符,我不知道我不知道的是什么,直到那个答案被写下来…如果有人说你需要先了解角色集…这个答案就足够了…这似乎是常识…之前似乎不是这样的…@hiroprogator-我很高兴你得到了一个对你有帮助的答案,但其中的正则表达式并不是你问题中的正则表达式的倒数。即使忽略晦涩的Unicode字符,[^\/:]的倒数也必须列出键盘上的其他标点字符…呵呵:嗯,我输入的一些字符重叠,所以我的正则表达式实际上无效,但你显然得到了这样的想法。呵呵,我输入的一些字符重叠,所以我的正则表达式实际上无效,但是你显然得到了这样一个想法:dot允许你将整个域字符串匹配到TLD,就像在www.dom1.dom2.website.com中一样,如果“-”是[]中的第一个或最后一个字符,则不需要转义组…我看到我应该重复初始组,以确保没有任何域子字符串以破折号开头。该点允许您将整个域字符串匹配到TLD,如www.dom1.dom2.website.com中所述,如果“-”是[]中的第一个或最后一个字符,则不需要转义组…我看到我应该重复初始组,以确保没有域子字符串以破折号开头