Regex验证多个域名

Regex验证多个域名,regex,Regex,我试图使用正则表达式(来自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}$ 对于文本的第一行,它可以正常

我试图使用正则表达式(来自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,表达式就会失败。是否可以让正则表达式遍历或解析字符串中的所有行?

为什么不简单地在换行符上拆分字符串?假设要忽略空行:

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
函数测试字符串(str){
变量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')
对于(变量i=0;i正确
testString('facebook.com\nClearlynotDomainName\napple.com')
=>错误

要验证[,;]域(仅限),您可以使用:

^\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+)\s*(?:[;,]\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+)\s*)*$

在不同的情况下进行测试。

问题非常不清楚。.您的有效无效示例不充分,并且含糊不清。在第一个示例中,所有三行都是有效的域名。在第二个示例中,第1行和第3行是有效域,而第2行不是域名。正则表达式捕捉一行的数据,但不捕捉多行的数据。这更清楚了吗?你试过使用修饰语g或m吗用于定义字符串的开头,$表示字符串的结尾…Daan下面的解决方案适用于我-无论如何,谢谢@ChaosClown!我喜欢那些在拼写“your”和“are”时抱怨清晰度差的人…完美-尴尬我自己没有想到:)谢谢!