正则表达式 regex_正则表达式初学者指南(Regex)

正则表达式是一组字符,这些字符形成可以在字符串中搜索的模式。 正则表达式可用于验证,例如验证信用卡号,用于搜索(即通过复杂的文本匹配)以及将匹配的文本替换为另一个字符串。 它还具有强大的多语言支持-学习一次即可在多种编程语言中使用它。

我见过很少有人对regex有所了解,并完全忽略了它。 我不怪他们。 regex的语法很复杂,并且会像那些命令行语言一样带来许多麻烦,只会更糟。 但是,每个新事物都令人恐惧,一开始似乎是不可能学习的。 因此,我借用Horatius的话说。 开始时,要大胆,要明智

关于正则表达式

Regex起源于神经科学数学 ,仅在1968年由Ken Thompson在QED文本编辑器中用于文本搜索的程序中实现。 现在,它是许多编程语言(例如Perl,Java,Python,Ruby和JavaScript)的一部分。

让我们看一些有关正则表达式如何工作的示例。

我将在示例中使用JavaScript。 现在,要通过初学者水平,您需要学习正则表达式中使用的所有字符,类,量词,修饰符和方法 。 这是Mozilla开发人员网络的正则表达式页面的链接,您可以在其中查看包含所有内容的表。 您还可以参考这篇文章结尾的备忘单,其中包含最常用的字符。

让我们看一个简单的例子并进行解释。 这是一个正则表达式。

这就是上面的正则表达式将在一行中查找的内容,字符“ B”后跟“ a”至“ z”,“ A”至“ Z”以及数字0至9。

这是突出显示的一行中的匹配项的示例:

,灯泡 B12 维他命, 硫酸钡 ,N 公元前 公司

上面的正则表达式将在以下位置停止搜索 并返回正面回应。 这是因为如果要让正则表达式查看所有可能的匹配项,则必须指定全局修饰符' g '

现在,让我们看看如何在JavaScript中使用此表达式。 test方法是:如果找到匹配项,则返回true ,否则返回false

var input = "your test string", regex = /B[a-zA-Z\d]+/;
	if(!regex.test(input))
	    alert('No match is found');
	else
	    alert('A match is found');

让我们尝试另一种方法: match返回在数组中找到的匹配项。

var input = "your test string", 
	    regex = /B[a-zA-Z\d]+/g, 
	    /*I've added the global modifier 'g' to the regex to get all the matches*/
	    ary = input.match(regex);    
	if(ary===null)
	    alert('No match is found');
	else
	    alert('matches are: ' + ary.toString());

字符串replace如何? 让我们现在用正则表达式尝试一下。

var input = "your test string", 
	    regex = /B[a-zA-Z\d]+/g;
	alert(input.replace(regex, "#"));

以下是您需要调整的Codepen。 单击“ JavaScript”选项卡以查看JS代码。

练习题

对于练习,您可以在Google“正则表达式练习”中进行搜索并尝试解决它们。 根据难度级别,这是尝试这些练习时的期望。

基本的

对我来说,对于初学者而言,能够验证密码就足够了。 因此,请选择8至16个字符长度的字母数字字母作为密码,并选择允许的特殊字符。

中间

在这里,您应该使用更多实际数据进行练习,并了解更多正则表达式要点,例如前瞻,断言断言匹配组

  • 验证PIN码,十六进制,日期,电子邮件ID,浮点数。
  • 替换尾随零,空格,一组匹配词
  • 提取URL的不同部分
高级

您可以优化上述练习的解决方案-电子邮件的最佳正则表达式中包含成千上万个字符-因此,只要您感到满意就可以了,这就足够了 。 您也可以尝试:

  • 解析HTML或XML(尽管在现实世界中不建议这样做,因为使用正则表达式解析非常规语言(如HTML)永远不会使其变得万无一失。加上XML解析是一项艰巨的任务,更适合于高级用户)
  • 更换标签
  • 删除注释(IE条件注释除外)

工具类

可视化正则表达式的工具对我来说是最酷的事情之一。 如果您遇到了很长的复杂正则表达式,只需将其复制粘贴到其中一个工具中,就可以清楚地查看流程。 除此之外, 还有许多工具可以用来修饰正则表达式代码。 他们还展示了示例和备忘单以及共享功能。

  • Debuggex –它根据您的输入绘制一个正则表达式图,您可以从此处快速共享到StackOverflow。
  • RegExr –您可以使用此测试您的正则表达式。 它还提供了参考,备忘单和示例来帮助您。
  • Refiddle –目前,除了JavaScript,您还可以在其中使用Ruby和.NET版本的regex。

正则表达式备忘单

代币 定义
[abc] 任何单个字符a,b或c
[^ abc] a,b或c以外的任何字符
[az] (包括)a到z之间的字符
[^ az] 字符(从a到z除外)
[AZ] A至Z之间(包括)之间的字符
任何单个字符
\ s 任何空白字符
\ S 任何非空白字符
\ d 0到9之间的任何数字
\ D 任何非数字
\ w 任何文字字符(字母,数字和下划线)
\ W 任何非单词字符
(...) 捕获所有封闭的内容
(a | b) 匹配a或b
一个? 字符a不存在或一次出现
一个* 字符a缺失或存在多次
a + 字符a出现一次或多次
一个{3} 连续出现3个字符
a {3,} 连续出现3个或更多字符
一个{3,6} 连续出现3至6个字符
^ 字符串开始
$ 字符串结尾
\ b 单词边界。 如果一个字符是单词的最后一个或第一个单词字符,或者如果一个字符在单词或非单词字符之间
\ B 非单词边界
现在阅读:

翻译自: https://www.hongkiat.com/blog/getting-started-with-regex/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值