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

正则表达式在javascript中无法按预期工作

丁均
2023-03-14

我已经为名称验证创建了一个正则表达式,其中只允许“_”、“-”、“'”、“.”。

以下是正则表达式:

^[a-zA-Z][a-zA-Z0-9\.\-_']{1,24}$

问题是这是其允许的名称有< code>@,检查小提琴演示:

var str = "deepak@";
var str2 = "@@";
alert(str.match("^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$"));//allowing why?
alert(str2.match("^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$"));//not allowing

应为:不应允许包含< code>@的名称。

注意:当我在https://regex101.com/#javascript测试这个正则表达式时,它运行良好

共有2个答案

尚俊楠
2023-03-14

我想这也一样:

str.match(/^\w{1,24}$/);

定义:

\w 元字符用于查找单词字符。单词字符是 a-z、A-Z、0-9 之间的字符,包括 _(下划线)字符。

祖利
2023-03-14

不要忘记在Javascript中使用正则表达式分隔符:

alert(str.match(/^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$/));

或者更好:

alert(str.match(/^[a-zA-Z][\w'.-]{1,24}$/));

更新JSFiddle

 类似资料:
  • 问题内容: 我已经努力了两天才能使它正常工作,但我做不到(对正则表达式:S太糟糕了)。 从本文中,我需要检索两个不同的东西:和。为此,我创建了此正则表达式: 在该示例中,它可以工作。但是,如果我尝试其他文本:,则只会得到一个包含2个分组的匹配:和,而不是获得2个不同的匹配:一个具有分组和,另一个具有分组和。 我希望你能帮助我。 提前致谢。 问题答案: 这是为什么组合可能是邪恶的经典示例。请改用否定

  • 我试图捕捉两个最接近的短语之间的文本,包括这些短语,但消极的展望似乎在我的情况下不起作用。 因此,这是文本文件的一部分: 我需要捕捉每一对<代码> 我的正则表达式是:

  • 问题内容: 琐碎的正则表达式问题(答案很可能是特定于Java的): 这将返回false。据我所知,是指它始终意味着的含义,没有特殊含义,因此我将其翻译为“字符串开头的’#’”。哪个应该匹配。在Perl中也是如此: 打印“ 1”。所以我很确定答案是特定于Java的。有人能启发我吗? 谢谢。 问题答案: 检查 整个输入字符串 是否与正则表达式匹配。 由于您的正则表达式仅与第一个字符匹配,因此它返回。

  • 问题内容: 这个问题已经在这里有了答案 : 字符串替换方法不替换字符 (5个答案) 2年前关闭。 我正在尝试将所有特殊字符替换为“%”,例如: 我的正则表达式是: 在在线工具中*它可以正常运行,但在Java中 弦保持不变。 *我尝试过:http : //www.regexplanet.com/ http://regex101.com/和其他 问题答案: 字符串是不可变的。您忘了将新变量重新分配给:

  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?

  • 问题内容: 如何在JavaScript中使用支持Unicode的正则表达式? 例如,应该有类似的东西可以匹配Letters或Marks类别中的任何代码点(而不仅仅是ASCII的),并且希望具有这样的过滤器来标点,等等。 问题答案: ES 6的情况 即将发布的ECMAScript语言规范,版本6,包含可识别Unicode的正则表达式。必须使用u正则表达式上的修饰符启用支持。请参阅ES6中支持Unic