【问题标题】:Javascript Regex to validate URL and Empty at the same timeJavascript Regex 同时验证 URL 和 Empty
【发布时间】:2012-11-13 09:39:52
【问题描述】:

我尝试编写一个正则表达式来使用绝对位置的 jQuery 验证插件,以在字符串为空或 URL 无效时给出错误。它适用于 URl,但如果存在空字符串则不会出错。这是正则表达式

 "regex": /^\S$|^(http[s]?:\/\/){0,1}(www\.){0,1}[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,5}[\.]{0,1}/,

有人可以告诉正则表达式有什么问题吗?

编辑:

我正在使用这个插件进行 jQuery 验证

演示:转到此 URL 并在 URL 验证部分中,删除 HTTP 并查看错误消息

http://www.position-relative.net/creation/formValidator/demos/demoValidators.html

当我将 required 和 URL 验证器一起添加时,它会发出 2 个错误。但只有网址 验证器,它并没有说它是一个无效的 URL。 Empty 和我只需要 1 个错误 无效的网址。

https://github.com/posabsolute/jQuery-Validation-Engine

谢谢

【问题讨论】:

  • 针对空字符串进行测试时,正则表达式返回 false。
  • 但遗憾的是它不适用于验证插件 :( 并且验证不显示弹出错误。
  • 也许您需要将该字段设为必填项。我假设插件不会在空字段上使用正则表达式。
  • 实际上这是主要问题,我们只希望在正则表达式中进行所需的验证,因此即使该字段留空,它也会给出错误 - 无效的 URL,而不是像 Field required 和 Invalid 这样的 2 个错误网址
  • 您可以将错误消息设置为相同的(无效 URL),无论是缺失值还是无效值。

标签: javascript jquery regex


【解决方案1】:

您可以使用data-errormessage 为所有错误设置相同的通用错误消息,因此无论该字段是否为空或具有无效值,您都会收到相同的消息。

【讨论】:

  • 问题是,当我将它用于 2 个不同的错误消息时,它会弹出两个错误消息。你可以在这里看到它:position-relative.net/creation/formValidator/demos/…,只需将 URL 字段设为空即可查看错误。
  • 是的,这就是我想告诉你的。不要在不同的地方两次使用“无效的 URL”。仅对 data-errormessage 属性使用一次。
  • 工作中,抱歉没能马上理解,谢谢:)
【解决方案2】:

【讨论】:

  • 我正在使用不同的插件进行 URL 验证,对于网站上的所有其他错误,此插件都有效。它只会弄乱 URL 字段。无法更改验证方法,因为我们将不得不更改很多东西。最好把这件事修好:) - 谢谢
【解决方案3】:

我写了一个小例子,你可以如何快速轻松地验证电子邮件。无需使用插件的麻烦。如果你只使用一次,你可以使用

var emailaddressVal = 'nobody@example.cpom';

var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if(emailReg.test(emailaddressVal) && emailaddressVal.length > 0)
{
    alert('Your email is valid.');
}
else
{
    alert('The email is invalid')
}

但是,将它放在一个函数中,以便您可以多次使用它。而不是把它放在一个函数中,例如:

// Email check function 
function checkEmail(email)
{
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    if(emailReg.test(email) && email.length > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

// Ussage 
if(checkEmail('nobody@example.com'))
{
    alert('SUCCESS!!');
}
else
{
    alert('FAILED!!');
}

【讨论】:

  • 问题出在该特定 prlugin 中使用的正则表达式。问题是,当我将它用于 2 条不同的错误消息时,它会弹出两条错误消息。你可以在这里看到它:position-relative.net/creation/formValidator/demos/...,只需将 URL 字段设为空并查看错误。
猜你喜欢
  • 2012-07-09
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多