用于验证多个单词的单数正则表达式

时间:2018-02-22 07:16:04

标签: javascript php jquery regex validation

你好,我有一个像facebook,Instagram,Youtube,pintrest等文本字段,更像是

<form action="" name="socialPageForm" method="post" onsubmit="return validateForm()">
    <input type="text" name="facebook_url"  />
    <input type="text" name="twitter_url"  />
    <input type="text" name="instagram_url"  />
</form>

和javascript函数一样

function validateForm() {
    var facebook_url = document.forms["socialPageForm"]["facebook_url"].value;
    if (facebook_url == "") {
        alert("Facebook Url must be filled out");
        return false;
    }
}  

我对正则表达式了解不多,但我在google上搜索了一下,我找到了许多“验证Facebook twitter和更多......”的解决方案。

其中一个如下:

if (/^(https?:\/\/)?((w{3}\.)?)twitter\.com\/(#!\/)?[a-z0-9_]+$/i.test(url))
     return 'twitter';    

 if (/^(https?:\/\/)?((w{3}\.)?)facebook.com\/.*/i.test(url))
     return 'facebook';

但我的问题是:有没有办法只使用单一的正则表达式验证所有社交网站?

大多数社交网站都有facebook.com/johnDoe, twitter.com/johnDoe, instagram.com/johnDoe等用户名;所以我们只需要在正则表达式中更改名称,它将适用于所有社交媒体网站。

  

它并不重要,它是使用php,jquery或javascript制作的。 The motto is to only validate.

2 个答案:

答案 0 :(得分:1)

此正则表达式适用于您的所有3个网站:

(https?:\/\/)?((w{3}\.)?)(twitter|facebook|instagram)\.com\/(#!\/)?[a-zA-Z0-9_]+

修改为validateForm():

function validateSiteURL(siteURL)
{
  var pattern = "(https?:\/\/)?((w{3}\.)?)(twitter|facebook|instagram)\.com\/(#!\/)?[a-zA-Z0-9_]+"; 
  var re = new RegExp(pattern);
  if (re.test(siteURL)) 
   return true;
  return false;
}

function validateForm()
{
  //Your code...
  if(!validateSiteURL(facebook_url))
    alert("Invalid facebook URL");
}

答案 1 :(得分:0)

尝试以下代码

url = "https://facebook.com/questions/48921616/one-regular-expressions-to-validate-multiple-social-link"
r = new RegExp(/(twitter\.com|facebook\.com|linkedin\.com)/g)
is_social_link = Boolean(url.match(r))
# return value for "is_social_link" is true