我正在尝试使用正则表达式(来自Javascript)来验证域名列表。例如,如果用户输入:
facebook.com
stackoverflow.com
apple.com..。正则表达式应该验证OK。然而,
facebook.com
clearlynotadomainname
apple.com..。如果验证失败。
我使用这个正则表达式:
^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$
它可以很好地处理第一行文本,但是一旦用户输入第一个CR/LF,表达式就会失败。有没有可能让正则表达式遍历或解析字符串中的所有行?
发布于 2012-11-19 19:42:36
为什么不简单地将字符串拆分成换行符呢?假设您想忽略空行:
function testString(str) {
var regex = /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}(\n|$)/
var split = str.split('\n')
for(var i = 0; i < split.length; ++i) {
if(split[i] != ''&& !regex.test(split[i]))
return false
}
return true
}
testString('facebook.com\nstackoverflow.com\napple.com')
=> true
testString('facebook.com\nclearlynotadomainname\napple.com')
=> false发布于 2019-10-22 20:41:25
要验证、;域(仅限),您可以使用:
^\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+)\s*(?:[;,]\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+)\s*)*$在不同的案例中进行了测试。
https://stackoverflow.com/questions/13452676
复制相似问题