当前位置: 首页 > 面试题库 >

两种regex模式有什么区别

孟谭三
2023-03-14
问题内容

我试图在Web应用程序中验证公司名称,并且使用此正则表达式模式

^[a-zA-Z_'\\s,;.-0-9]{1,100}$

上述模式将拒绝值 10004 Estates Limited

但是如果我提出0-9,那么模式变成

^[a-zA-Z0-9_'\\s,;.-]{1,100}$

然后就可以了。正则表达式和模式是新手,但我知道我应该使用更多它,因此我想对此进行澄清。谢谢。


问题答案:

-是字符类中的一个特殊字符,因此.-0-9是歧义的,可能会.赋予0-和含义9,因此本质上是字符./09-

要在字符类中包含连字符减号,您必须将其转义或将其放在字符类的开头或结尾(这是您在第二个正则表达式中所做的,也许是偶然的)。

编辑添加:至少对于.NET的正则表达式引擎,以上猜测似乎是正确的:

PS> [char[]](32..127) -match '[a-zA-Z_''\s,;.-0-9]'

'
,
-
.
/
0
9
;
A
...


 类似资料:
  • 问题内容: 与 是否有EventEmitter.call(this)所需的功能? 问题答案: 是否有EventEmitter.call(this)所需的功能? 显然,是的: 由于所有使用的方法都会检查其是否存在,因此,如果您忽略了调用,我希望不会有太大的改变,但是我不确定将来是否成立。 有迹象表明,做足够多的其他构造 不 容忍被省略,所以这是很好的做法,只是 始终 构造一个实例时调用构造函数。

  • 问题内容: 我注意到vim的替代正则表达式与其他正则表达式有些不同。它们之间有什么区别? 问题答案: 如果用“正常正则表达式”来表示Perl兼容正则表达式(PCRE),那么Vim帮助就Vim的正则表达式和Perl的区别提供了一个很好的总结: 从Vim 7.2开始,它是这样的:

  • 这个答案几乎描述了问题的前半部分。 上面写着: 看过“四人帮”的定义后,我不相信这有什么真正的区别。(为方便起见包括在内) 装饰器:允许对对象进行动态包装,以便修改它们现有的职责和行为 责任链:通过将接收对象链接在一起,使多个对象有机会处理请求 维基百科对它们做了一些补充,但有些是武断的。 > 装饰器通常作为链表实现。但我认为这太低了,不能被认为是模式的“一部分”。 责任链只处理数据,如果这是他们

  • 本文向大家介绍这两种展开运算符的方式有什么区别呢?相关面试题,主要包含被问及这两种展开运算符的方式有什么区别呢?时的应答技巧和注意事项,需要的朋友参考一下 本题在于考察展开运算符...属于浅拷贝 function Super(val) { this.value = val || 'init' } Super.prototype.getTxt = function () { console.log(

  • 此行不显示可能的有损转换,而 上面的一行显示错误。有什么原因吗?