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

将字符串的相同起始字符和结束字符与正则表达式匹配

红智鑫
2023-03-14

我试图将字符串的起始字符和结束字符匹配为同一个元音。我的正则表达式在大多数情况下都能工作,但在其他情况下会失败:

var re = /([aeiou]).*\1/;
re.test(str);

样本输入:

  • abcde,输出-false(有效)
  • abcda,输出-true(有效)
  • aabcdaa,输出为true(有效)
  • aeqwae,输出-true(无效)
  • ouqweru,输出-true(无效)

共有3个答案

汪栋
2023-03-14

上面已经提到了正确答案,只是为了进一步澄清:

regEx= /^([a,e,i,o,u])(.*)\1$/

这里,\1是再次匹配相同文本的反向引用,您可以多次重复使用相同的反向引用。大多数正则表达式支持多达99个捕获组和两位数的反向引用。因此,如果您的正则表达式有99个捕获组,\99是一个有效的反向引用。详细信息请访问\u

卢涵畅
2023-03-14

只是我为了好玩而写的@Hristiyan Dodov答案的另一个版本。

js lang-js prettyprint-override">regex = /^(a|e|i|o|u).*\1$/

const strings = ['abcde', 'abcda', 'aabcdaa', 'aeqwae', 'ouqweru']

strings.forEach((e)=>{
  const result = regex.test(e)
  console.log(e, result)
})
郑宏朗
2023-03-14

您需要将锚添加到字符串中。

如果您有,例如:

aeqwae

您说输出为true,但它无效,因为ae不同。好的,正则表达式只是匹配上一个字符(在e之前),即a。因此,匹配是有效的。所以,你得到了这个:

[aeqwa]e

括号中包含的字符串是实际匹配项,以及它返回true的原因。

如果将正则表达式更改为:

/^([aeiou]).*\1$/

通过添加^,您告诉它匹配的开始必须是字符串的开始,通过添加$您告诉它匹配的结束必须是字符串的结束。这样,如果存在匹配,则整个字符串必须匹配,这意味着aeqwae将不再匹配。

测试regex的一个很好的工具是Regex101。给它一个尝试!

注意:根据您的输入,您可能需要设置全局(g)或多行(m)标志。全局标志阻止正则表达式在第一次匹配后返回。多行标志使^$匹配行的开始和结束(而不是字符串)。我在使用您的输入进行测试时使用了它们。

 类似资料:
  • 问题内容: 我在尝试将我的javascript regex经验转移到Python时遇到了麻烦。 我只是想让它工作: …但是它打印无。如果我做: 它匹配…默认情况下是否匹配字符串的开头?当匹配时,如何使用结果? 我如何进行第一场比赛?是否有比python网站提供的文档更好的文档? 问题答案: 隐式添加到您的正则表达式的开头。换句话说,它仅在字符串的开头匹配。 将在所有位置重试。 一般来说,建议您在需

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)

  • 字符串可以说是程序设计中最为重要的数据类型之一。几乎每种高级编程语言都有它的一席之地,而且能有效的使用它也是开发者编写实用程序的基本准则。作为重要的扩展,正则表达式赋予开发者操作字符串的额外能力。ECMAScript 6 的缔造者们将这些事实牢记于心,改进了字符串和正则表达式,并添加了长久以来缺失的某些功能。本章会讲解它们的变化之处。 译者注: gitbook 无法正常解析 $$ 字符,所以在模板

  • 问题内容: 我有一个输入字符串。 我正在考虑如何有效地将此字符串与多个正则表达式匹配。 我想针对这些正则表达式模式进行匹配,如果其中至少一种匹配则返回: 我不确定如何一次匹配多种模式。有人可以告诉我我们如何有效地做到这一点吗? 问题答案: 如果只有几个正则表达式,并且在编译时都知道它们,那么这就足够了: 如果它们更多,或者它们在运行时加载,则使用模式列表:

  • 我有一个包含数千行的文本文件。这里有一个例子 我试图提取'nt60'、'nt50'末尾的字符串。 问题是会包含行尾字符() 我想使用正则表达式搜索来匹配从 (') 开始的字符串,但我不知道我应该用什么来匹配 。 有人能帮忙吗?

  • 相比较于第一章变量的声明,这一章的内容有了一点深度提升,但还不至于很难理解。本章主要讲2个知识点,字符串、正则表达式 字符串 字符串(String)是JavaScript6大原始数据类型。其他几个分别是Boolean、Null、Undefined、Number、Symbol(es6新增)。 字符串类型在前端开发者,是使用最频繁的类型之一,网站上可见的各种文案,几乎都是字符串类型的数据。我们经常需要