[^/:]|正则表达式改进的倒数
The inverse of [^/:] | Regular Expression Improvement
此字符集
[^'/:] // all characters except / or :
根据jslint b.c.,它很弱。我应该指定可以使用的字符,而不是不能根据这个SO Post使用的字符。
这是一个简单的非生产级别的域测试仪,看起来像这样:
domain: /:'/'/(www'.)?([^'/:]+)/,
我只是在寻找一些方向来思考这个问题。帖子提到,允许使用无数的Unicode字符不是一件好事。。。我该如何制定一个写得更好的计划?
我不关心我的域检查器的完整性(它只是一个原型)。。。我关心的是如何以不同的方式编写reg exes
根据http://en.wikipedia.org/wiki/Domain_name#Internationalized_domain_names
域名系统中允许的字符集基于ASCII
根据http://www.netregister.biz/faqit.htm#1
要命名您的域名,您可以使用任何字母、0到9之间的数字和符号"-"[只要第一个字符不是"-"]
并且考虑到您的域必须以.something结尾,您正在寻找
([a-zA-Z0-9][a-zA-Z0-9-]*'.)+[a-zA-Z0-9][a-zA-Z0-9-]*
"我应该指定可以使用的字符,而不是不能使用的字符"
不,那是胡说八道,只是JSLint是JSLint。
当您在正则表达式中看到[^'/:]
时,它的作用就显而易见了。如果您试图列出所有可能的允许的字符,则生成的正则表达式将非常难以读取,并且很容易意外忘记包含一些字符。
如果您有一组特定的允许字符,那么可以列出它们。这比试图列出所有可能的无效字符更容易、更可靠。
但是,如果您有一组特定的无效字符,[^]
语法是正确的方法。
这里有一个正则表达式,用于您可以拥有的字符:
mycharactersarecool[^shouldnothavethesechars](oneoftwooptions|anotheroption)
这就是你在说的吗?
这对谷歌来说是一个很好的问题,你知道。。。但这只是为了弄湿你的嘴:Matthew O'Riordan写了这样一个正则表达式,无论有没有协议,数学都会联系起来。
这是他的博客文章的链接
但为了将来参考,让我在这里提供帖子中的正则表达式:
/((([A-Za-z]{3,9}:(?:'/'/)?)(?:[-;:&='+'$,'w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&='+'$,'w]+@)[A-Za-z0-9.-]+)((?:'/['+~%'/.'w-_]*)?'??(?:[-'+=&;%@.'w_]*)#?(?:[.'!'/''w]*))?)/
正如博客作家Matthew自己所说:
(
( # 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_.]
这应该与//之后和第一个//之前的所有内容相匹配。但是当你的网址没有以斜杠结尾时会发生什么呢?那样的话你会怎么办?
上正则表达式(简化)只匹配一个字符,就像负字符集一样。因此,这只是在您使用的完整reg ex中替换您的负集。
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 使用正则表达式捕获“”并分割成阵列
- 将这些正则表达式从javascript转换为Java
- [^/:]|正则表达式改进的倒数