0

ドメイン名のリストを検証するために(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を入力するとすぐに、式は失敗します。文字列内のすべての行を反復処理する、またはその他の方法で解析するために正規表現を取得することは可能ですか?

4

2 に答える 2

2

文字列を改行で単純に分割してみませんか?空の行を無視したい場合:

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
于 2012-11-19T11:42:36.190 に答える
0

[、;]ドメイン(のみ)を検証するには、次を使用できます。

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

さまざまなケースでテストされています。

于 2019-10-22T12:41:24.947 に答える