繁体   English   中英

JS中的正则表达式,用于字母数字,点和连字符

[英]Regular expression in JS for alphanumeric, dot and hyphen

我需要一个JS正则表达式,它应该只允许包含字母数字,点和连字符的单词。

让我知道这是正确的。

var regex =  /^[a-zA-Z_0-9/.-]+$/;

几乎。 这也将允许下划线和斜线。 从您的范围中删除:

var regex =  /^[a-zA-Z0-9.-]+$/;

这也与空字符串不匹配。 这可能是你想要的,但也可能不是你想要的。 如果它不是您想要的,请将+更改为*

我做的第一个简化是使用“单词字符”简写'\\ w',它与'a-zA-Z'大致相同,但更短,并且当您转移到其他语言时自动保持正确一些带重音的字母字符,以及“数字字符”的简写'\\ d'。

此外,尽管dot在正则表达式的大多数位置都是特殊的,但在方括号内并不特别,并且不应该在那里引用。 (此外,单个字符引号字符又回来了-slash,而不是正斜杠,这括号内你的斜杠是开始和结束的RE,所以相同的字符可能提前终止RE等原因一个解析错误!)因为我们完全扔掉了它,它不再重要,它应该是正斜杠还是反斜杠,引用还是裸露。

正如你所注意到的,连字符在括号内有“范围”的特殊含义(例如:az),所以如果你想要一个字面连字符,你必须做一些不同的事情。 按照惯例的东西是首先把连字符的括号内。

所以我的结果将是var regex = /^[-.\\w\\d]+$/;

(正如你可能已经注意到的那样,几乎总有不止一种表达正则表达式的方式因此它起作用,RE weenies花费了很多时间来表达经济性和b)运行时表现就像它们在获得它时一样“正确”。 换句话说,你可以忽略我刚才所说的大部分内容,因为它对你来说并不重要。 我认为真正重要的是a)摆脱那个无关的前向斜线和b)将文字连字符移动到方括号内的第一个字符。)

(另一个想法:在接受字母字符和连字符时非常频繁, 下划线也是可以接受的......所以你真的想要拥有那个下划线吗?)

(还有一个想法:有时标识符的第一个字符必须是alpha,在这种情况下你可能需要的是var regex = /^\\w[-.\\w\\d]*$/;你可能想要一个不同的在任何情况下,第一个字符的规则,因为上面的天真配方将允许“ - ”和“。”作为长度为1的合法字。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM