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

Javascript JS中用于字母数字、点和连字符的正则表达式,javascript,regex,Javascript,Regex,我需要一个JS正则表达式,它应该只允许单词有字母数字,点和连字符 让我知道这是正确的 var regex = /^[a-zA-Z_0-9/.-]+$/; 差不多。这也将允许下划线和斜线。从您的产品系列中删除这些: var regex = /^[a-zA-Z0-9.-]+$/; 这也将与空字符串不匹配。这可能是你想要的,但也可能不是你想要的。如果它不是您想要的,请几乎将+更改为*。这也将允许下划线和斜线。从您的产品系列中删除这些: var regex = /^[a-zA-Z0-9.-]+

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

让我知道这是正确的

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

差不多。这也将允许下划线和斜线。从您的产品系列中删除这些:

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

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

。这也将允许下划线和斜线。从您的产品系列中删除这些:

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

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

我要做的第一个简化是使用“word character”速记“\w”,它与“a-zA-Z”大致相同,但较短,并且当您移动到包含一些重音字母字符和“数字字符”的其他语言时,自动保持正确速记'\d'

此外,尽管点在正则表达式中的大多数地方都是特殊的,但在方括号内它并不特殊,不应该在那里引用。(此外,单字符引号字符是反斜杠,而不是正斜杠。括号内的正斜杠与RE开头和结尾的字符相同,因此可能会过早终止RE,从而导致解析错误!),因为我们完全抛弃了它,它应该是正斜杠还是反斜杠、引用还是裸斜杠已经不再重要了

正如您所注意到的,连字符在括号内(例如:a-z)有“范围”的特殊含义,所以如果您想要一个文字连字符,您必须做一些稍微不同的事情。按照惯例,某些事情是把文字连字符放在括号内的第一位

因此,我的结果将是
var regex=/^[-.\w\d]+$/

(正如您可能已经注意到的,几乎总是有不止一种方式来表达正则表达式,这样它才能正常工作,而且我们每周花在a)表达式经济性和b)运行时性能上的时间与他们花在“正确”上的时间一样多。换句话说,你可以忽略我刚才说的大部分内容,因为这对你来说并不重要。我认为真正重要的是a)去掉多余的正斜杠,b)将文字连字符移动到方括号内的第一个字符。)

(另一个想法是:通常在接受字母字符和连字符时,下划线也是可以接受的……那么你到底是不是真的想用下划线?)


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

我要做的第一个简化是使用“word character”速记“\w”,它与“a-zA-Z”大致相同,但较短,并且在使用其他语言(包括一些重音字母字符)和“Digital character”速记“\d”时自动保持正确

此外,尽管点在正则表达式中的大多数地方都是特殊的,但在方括号内它并不特殊,不应该在那里引用。(此外,单字符引号字符是反斜杠,而不是正斜杠。括号内的正斜杠与RE开头和结尾的字符相同,因此可能会过早终止RE,从而导致解析错误!),因为我们完全抛弃了它,它应该是正斜杠还是反斜杠、引用还是裸斜杠已经不再重要了

正如您所注意到的,连字符在括号内(例如:a-z)有“范围”的特殊含义,所以如果您想要一个文字连字符,您必须做一些稍微不同的事情。按照惯例,某些事情是把文字连字符放在括号内的第一位

因此,我的结果将是
var regex=/^[-.\w\d]+$/

(正如您可能已经注意到的,几乎总是有不止一种方式来表达正则表达式,这样它才能正常工作,而且我们每周花在a)表达式经济性和b)运行时性能上的时间与他们花在“正确”上的时间一样多。换句话说,你可以忽略我刚才说的大部分内容,因为这对你来说并不重要。我认为真正重要的是a)去掉多余的正斜杠,b)将文字连字符移动到方括号内的第一个字符。)

(另一个想法是:通常在接受字母字符和连字符时,下划线也是可以接受的……那么你到底是不是真的想用下划线?)


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

请花几分钟时间阅读此内容。如果你真的在这里参与,而不是仅仅接受帮助而不给予任何回报,那就太好了。谢谢。:)请花几分钟读一下。如果你真的在这里参与,而不是仅仅接受帮助而不给予任何回报,那就太好了。谢谢。:)稍微短一点<代码>/^[a-z\d.-]+$/i
稍微短一点<代码>/^[a-z\d.-]+$/i