当前位置: 首页 > 知识库问答 >
问题:

名称的Javascript验证正则表达式

邢良才
2023-03-14

我希望在我的应用程序中接受带有字母和连字符或破折号的名称,我的代码基于我在这里找到的答案并编码为:

function validName(n){
  var nameRegex = /^[a-zA-Z\-]+$/;
  if(n.match(nameRegex) == null){
    return "Wrong";
  }
  else{
    return "Right";
  }
}

唯一的问题是它接受连字符作为我不想要的第一个字母(甚至是多个字母)。谢谢

共有3个答案

盖向荣
2023-03-14

您可以使用Pranav C Balan提出的否定前瞻,也可以使用这个简单的表达式:

^[a-zA-Z]+[a-zA-Z-]*$

实例:https://regex101.com/r/Dj0eTH/1

范哲
2023-03-14

您需要将单字符类分解为2,将连字符移出其中,并使用分组构造来匹配连字符序列和字母数字:

var nameRegex = /^[a-zA-Z]+(?:-[a-zA-Z]+)*$/;

查看正则表达式演示

这将匹配字符串开头的字母数字字符(1个或多个),然后将匹配0个或多个出现的-一个或多个字母数字字符,直到字符串末尾。

如果字符串中只能有1个连字符,请将末尾的*替换为(请参阅正则表达式演示)。

如果还希望允许字母数字字符之间出现空白,请将-替换为[\s-](演示)。

宇文鸣
2023-03-14

使用负先行断言可以避免匹配以连字符开头的字符串。虽然在字符类末尾提供时,字符类中不需要转义。使用删除的字符类以避免在结尾处出现,或者使用先行断言。

var nameRegex = /^(?!-)[a-zA-Z-]*[a-zA-Z]$/;
// or
var nameRegex = /^(?!-)(?!.*-$)[a-zA-Z-]+$/;
var nameRegex = /^(?!-)[a-zA-Z-]*[a-zA-Z]$/;
// or
var nameRegex1 = /^(?!-)(?!.*-$)[a-zA-Z-]+$/;

function validName(n) {
  if (n.match(nameRegex) == null) {
    return "Wrong";
  } else {
    return "Right";
  }
}

function validName1(n) {
  if (n.match(nameRegex1) == null) {
    return "Wrong";
  } else {
    return "Right";
  }
}

console.log(validName('abc'));
console.log(validName('abc-'));
console.log(validName('-abc'));
console.log(validName('-abc-'));
console.log(validName('a-b-c'));

console.log(validName1('abc'));
console.log(validName1('abc-'));
console.log(validName1('-abc'));
console.log(validName1('-abc-'));
console.log(validName1('a-b-c'));
 类似资料:
  • 问题内容: 刚刚开始探索正则表达式的“奇迹”。作为一个从试验和错误中学习的人,我真的很努力,因为我的试验抛出了不成比例的错误……我的实验是在PHP中使用ereg()进行的。 无论如何。我分别使用名字和姓氏,但现在使用相同的正则表达式。到目前为止,我有: 任何以大写字母开头且其余仅包含字母(大写或不大写)的长度字符串。但是我分崩离析的地方是在几乎任何地方都可能发生的特殊情况下。 连字符(Worthi

  • 本文向大家介绍Javascript的表单验证-初识正则表达式,包括了Javascript的表单验证-初识正则表达式的使用技巧和注意事项,需要的朋友参考一下 推荐阅读:Javascript的表单验证长度 Javascript的表单验证-提交表单 Javascript的表单验证-揭开正则表达式的面纱 JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。 验证日期

  • 问题内容: 有人有用于验证网址的正则表达式(不是在文本段落中找到它们)吗?最好使用JavaScript代码段。 问题答案: 实际的URL语法非常复杂,并且很难在正则表达式中表示。那里大多数看起来简单的正则表达式都会给出许多错误的否定和错误的肯定,但即使最终的结果并不好。 加上这些天,您通常都希望允许使用IRI和老式的URI,因此我们可以链接到有效地址,例如: 我只会做简​​单的检查:它是否以一个已

  • 主要内容:标签属性,JSF验证整数范围实例标签用于将字符串值验证为所需格式。 以下代码显示如何使用标记。 标签属性 属性 说明 pattern 格式化模式 JSF验证整数范围实例 打开 NetBeans IDE 创建一个Web工程:ValidateRegularExpression,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文件:result.xhtml 的代码内容如下所示 - 文件:

  • 我有以下用于javascript密码验证的正则表达式: 正则表达式规则是: 12-25个字符 至少有一个大写字母 至少有一个小写字母 至少有一个数字 至少有一个特殊字符:!#$%()*,-./:;=?@[]^ `{124;}~ 然而,正则表达式似乎不起作用。它匹配任何字符。我该怎么解决这个问题?

  • 我正在修改一个脚本。该脚本包含一个表单,允许访问者向电话号码发送短信。在表单中,我有一个文本框,用户在其中输入文本接收器的电话号码。我正在使用正则表达式验证电话号码,以防止垃圾邮件发送者,并确保用户键入正确的号码。 以下是阿富汗使用的默认电话号码: 正则表达式验证首先应该确保使用93,然后确保在93之后使用78、77、79或700(其中之一),最后是6位数。 下面是我试图修复的Javascript