计算机程序设计

Javascript,正则表达式:示例,检查正则表达式

在超文本语言出现之前,而是明确地说,不仅需要搜索,而且在特定条件下,在特定的地方进行改变,在正确数量的情况下,通常的搜索和替换功能被安排为任何复杂的程序员。 创建了编程语言搜索艺术的杰作,数据库以采样条件的形式进行了改进,配备了存储过程,触发器和其他从繁琐的关系信息组合中抽取的方法。 革命的正式表达方式的出现并没有导致,而是搜索和替换信息的有用和便利的手段。 例如,常规的JavaScript JavaScript电子邮件大大简化了访问者的注册,他们不会通过将消息发送到不存在的地址来下载站点。

要说,JavaScript正则表达式比条件循环运算符框架中的精心设计的indexOf()序列要好得多,所以这是不可能的,但是说它使得脚本代码紧凑,但对于未启动的读者却很难理解。

RegExp对象=模板+引擎

正则表达式是一个模板+引擎。 第一个是正则表达式本身 - JavaScript对象是RegExp,第二个是将其应用于字符串的模板执行器。 为每个编程语言实现正则表达式的引擎是不同的。 尽管并不是所有的差异都是重要的,但应该记住这一点,并且在使用之前一定要仔细检查正则表达式。

编写正则表达式的特殊符号是非常方便和有效的,但需要开发人员的关心,准确性和耐心。 要使用正则表达式的符号,需要使用。 这不是对时尚的致敬,而是实现“JavaScript正则表达式”机制的逻辑。

正则表达式模式

允许两个选项:

Var expOne = / abc * / i;

Var expTwo = RegExp(“abc *”,“i”);

通常使用第一种方法。 在第二种情况下,使用引号,因此要使用'\'字符,必须通过常规规则进行转义。

“我”是表示“注册不重要”的标志。 您还可以使用标志“g” - “全局搜索”和“m” - 多行搜索。

符号'/'用于指定模板。

正则表达式的开始和结束

字符'^'定义正则表达式从中开始的字符,'$'确定最后应该使用哪个字符。 不要在表达中尝试他们,他们有不同的意思。

例如,

Var eRegExp = new RegExp(cRegExp,'i');

var cRegRes ='';

Var sTest ='AbcZ';

if(eRegExp.test(sTest)){

CRegRes + =' - 是';

}否则{

CRegRes + =' - 否'

}

Var dTestLine = document.getElementById('scTestLine');

DTestLine.innerHTML ='字符串“+ sTest +'”+ cRegRes的表达式/'+ cRegExp +'/

在元素'scTestLine'中会有一个结果(变量cRegExp有相应的值):

字符串“abcz”表示/ ^ AbcZ $ / - 是的

如果你删除标志'i',结果将是:

表达式/ ^ AbcZ $ /为字符串“abcz” - 否

正则表达式内容

正则表达式是搜索主题的一系列字符。 表达式/ qwerty /查找正是这个序列的发生:

表达式/ qwerty /字符串“qwerty” - 是的

表达式/ qwerty /的字符串“123qwerty456” - 是的

角色'^'改变了表达的本质:

表达式/ ^ qwerty /的字符串“123qwerty456” - 否

字符串“qwerty456”的表达式为/ ^ qwerty /是 -

类似的行尾字符。 正则表达式允许序列:例如[az],[AZ],[0-9] - 指定寄存器或数字中的拉丁字母的所有字母。 也允许使用俄罗斯字母,但您应该注意字符串的编码(在哪里查找正在搜索的内容)和页面。 通常,俄语字母,如特殊字符,最好由代码提供。

当形成正则表达式时,您可以指定特定位置中某些符号的存在的选项,其数字设置如下:'*'=重复0次或更多次; '+'=重复1次以上; {1,}与'+'相同; {N} =重复n次; {N,} =重复n次以上; {N,m} =从n到m次的重复。

使用方括号,可以从集合中指定字符变体。 看起来像这样。 [Abcd] = [ad] =任何四个字符:'a','b','c'或'd'。 你可以指定相反的。 除了集合中指定的字符之外的任何字符:[^ abcd] =除'a','b','c'或'd'之外的任何字符。 '?' 表示在这个地方可能没有符号。 '' 定义任何字符,除了换行符。 这是'\ n','\ r','\ u2028'或'\ u2029'。 表达式'\ s * | \ S *'='[\ s | \ S] *'表示搜索任何字符,包括换行符。

正则表达式的简化版本

表达式'[\ s | \ S] *' - 搜索一个空格或它的缺失,就是这一切在行中。 在这种情况下,符号“\ s”代表一个空格,“\ S”代表它的缺席。

同样,您可以使用'\ d'搜索十进制数字,'\ D'将找到一个非数字字符。 符号“\ f”,“r”和“\ n”对应于换页,回车和换行。

标签字符为'\ t',垂直字符为'\ v'。 符号'\ w'将找到拉丁字母(字母,数字,下划线)= [A-Za-z0-9_]的任何字符。

符号'\ W'相当于[^ A-Za-z0-9_]。 这意味着不是拉丁字母,数字或'_'字符的字母的任何字符。

搜索字符“\ 0”=搜索NUL字符。 搜索'\ xHH'或'\ uHHHH'=分别搜索具有HH或HHHH代码的字符。 H - 十六进制数字。

推荐的语言和正则表达式的编码

任何正则表达式对于仔细测试不同的行选项很重要。

通过创建正则表达式的经验,错误会更少,但是必须始终记住,自己对编写正则表达式的规则的知识可能与现实不符,特别是当“常规”从一种语言转移到另一种语言时。

在经典(精确指示)和正则表达式的简化版本之间进行选择,最好选择第一个。 毕竟,经典总是清楚地表明正在寻找什么。 如果正则表达式或搜索字符串中有俄语字母,则应该导致所有行的单个编码和执行正则表达式的JavaScript代码的页面。

当处理不属于拉丁字母的字符时,考虑指定字符代码而不是字符本身是有意义的。

执行JavaScript搜索算法时,应仔细检查正则表达式。 控制字符编码尤为重要。

正则表达式中的括号

方括号指定特定位置必须或不存在的字符变体,而圆括号是序列的变体。 但这只是一般规则。 没有例外,但有很多不同的应用。

var cRegExp =“[az] *。(Png | jpg | gif)”;

Var eRegExp = new RegExp(cRegExp,'i');

var cRegRes ='';

Var sTest ='picture.jpg';

if(eRegExp.test(sTest)){

CRegRes + =' - 是';

}否则{

CRegRes + =' - 否'

}

结果:

表示/[az]*.(png|jpg|gif )/的“picture.jpg”行 - 是的

表达式/^[ad][az]*.(png|jpg|gif )/的行“picture.jpg” - 否

表达式/^[ad][az]*.(png|jpg|gif )/为字符串“apicture.jpg” - 是

表达式/^[ad][az]*.(png|jpg|gif )/为字符串“apicture.jg” - 否

应该特别注意的是,所有的东西,之后有一个星号,可以存在零次。 这意味着“正规”可以以最意想不到的方式工作。

检查RegExp - 测试电子邮件

在JavaScript中,正则表达式接收两种方法,即test和exec,可以在String对象的方法中使用:search,split,replace和match。

测试方法已经被证明,它允许你检查正则表达式的正确性。 该方法的结果为true / false。

请考虑以下常规JavaScript表达式。 从“困难但准确”的数量检查电子邮件:

Var eRegExp = /^(([^<>()\[\]\\.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @“] +)*)|(”。+“))@((\ [[0-9] {1,3} \。[0-9] {1,3} \。[0-9] 1,3] \。[0-9] {1,3}])|(([a-zA-Z \ -0-9] + \。)+ [A-zA-Z] {2,}) )$ /;

对于字符串var sTest ='SlavaChip@sci.by'给出了真实的,也就是说,这个字符串是正确的电子邮件地址。 该检查使用eRegExp.test(sTest)方法执行。

实用:处理电子邮件

输出上的exec方法提供了一个数组,调用:

Var aResult = eRegExp.exec(sTest);

CRegRes ='
'+ aResult.length +'
';
For(var i = 0; i CRegRes + = aResult [i] +'
';
}

给出以下结果:

9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
。芯片
未定义
sci.by
未定义
sci.by
SCI。

其他方法工作类似。 建议您自己检查。 在实践中,正则表达式的开发和使用是可取的,在这里复制代码并不总是适合的。

受欢迎的“常客”

上述JavaScript正则表达式对于eMail并不是唯一的一个,有很多更简单的选项。 例如,/^[w-\.]+@[\w-]+\ .[az]{2,3}$/i。 但是,此选项不考虑用于记录电子邮件地址的所有选项。

当然,在设计自己的JavaScript正则表达式之前,您需要查看同事的经验,分析他们提供的方法。 但有一定困难。 不要忘记JavaScript正则表达式(复制时的例子)可以复制基本字符:'\','/'或引号。 这将导致可以搜索很长时间的错误。

考虑习惯的“人的方面”很重要。 毕竟,可以以各种方式指定可以是访问者(个人)的手机的正式JavaScript正则表达式:123-45-67,(29)1234567,80291234567或+375291234567。 这一切都是一样的。 编写几个模板的变体并不总是可以接受的,用于编写数字的规则的刚性固定可能会产生不必要的不便或限制。 变体/ ^ \ d [\ d \(\)\ - ] {4,14} \ d $ / i适用于大多数手机验证案例。

如果要组合JavaScript正则表达式,只能使用数字检查,那么即使是这样简单的情况也需要澄清。 他必须考虑整数或分数,指数符号或普通正数或负数。 您还可以考虑货币符号的存在,小数点后的数字位数以及数字的整个部分分成三元组。

表达式/ ^ \ d + $ / i将仅检查数字,并且表达式/ ^ \ d + \。\ d + $ / i允许您使用句点来指示数字的小数部分。

在JavaScript中,可以使用正则表达式来指定输入数据的格式,这很重要,特别是在输入问卷,护照数据,合法地址等时。

检查日期很复杂

考虑JavaScript正则表达式。 日期的示例,如数字或电话号码,表示硬度和灵活性之间的选择。 事件的日期是通常必须输入的基本数据之一。 但是以某种格式修改输入:'dd-mm-yyyy'或'dm.yy'通常会导致客户不满意。 从传统的HTML表单执行的从日期到月份的输入字段的转换,只能在输入一位数字时进行,而进入第二个输入字段可能会导致困难。 例如,在第3天的领域已经输入了,而下一个数字2不替代第一个,并被分配给它32,这自然会引起不便。

正则表达式的效率和便利性基本上取决于与访客的对话的整体建设。 在一种情况下,建议使用一个表单输入字段来指示日期,在另一种情况下,需要为日,月和年提供不同的字段。 但是,随后的检查闰年,月数,天数也将增加“代码费用”。

用替换搜索,正则表达式的内存

JavaScript替换(正则表达式)使用String对象的方法,并允许您找到该值并立即更改它。 这对于纠正输入错误,编辑表单字段的内容以及将数据从一种呈现格式转换为另一种格式非常有用。

var cRegExp = /([а-я] +)\ s([а-я] +)\ s([а-я] +)/ i; //在搜索中创建三个'变量'

Var sTest ='这篇文章很好!
var cRegRes = sTest.replace(cRegExp,“$ 2,$ 3,$ 1”);

Var dTestLine = document.getElementById('scTestLine');

DTestLine.innerHTML ='字符串“+ sTest +”的表达式'+ cRegExp +'将是:'+ cRegRes;

结果:

对于“这篇文章很好!”这个行的表达式/([a-π] +)\ s([a-π] +)\ s [[a-π] +)/ i 获取:一篇文章,不错,这个!

执行时,每对括号将结果存储在'变量'$ n中,其中n是括号对($ 1,$ 2,...)的编号。 与普遍接受的不同,在这里,变量的编号是用1进行的,而不是0。

一般建议

正则表达式简化了代码,但是开发的时间往往很重要。 您可以开始使用简单的构造,然后将其组合成更复杂的表达式。 您可以使用各种在线服务来测试正则表达式或特殊的本地工具。

最好的选择是创建自己的正则表达式库和您自己的测试新开发工具的工具。 这是巩固经验和学习如何快速创建可靠舒适设计的最佳方式。

使用重复的字符和行,即特殊字符'*','+'和表示重复次数的大括号应以简单和便利的原则为指导。 重要的是要明白,从操作开始到获取结果的正则表达式完全是所用浏览器的引擎的力量。 并非所有JavaScript语言都是等效的。 每个浏览器可以在正则表达式的解释中带来自己的 个人偏好 。

兼容性不仅涉及页面和样式表,还涉及正则表达式。 只有在成功使用不同浏览器的情况下,才能使用JavaScript进行调试。

JavaScript,String和RegExp

通过客户端的正确工作,即在访问者的JavaScript语言浏览器中,开发人员需要高资格认证。 由于可以使用您自己的浏览器工具或第三方扩展程序,代码编辑器,独立程序来调试JavaScript代码,这已经很久了。

然而,并非所有的情况下,调试器可以处理,并为开发者,迅速错误检测的良好支持,检测瓶颈。 当电脑一直专注于计算的时候,在遥远的过去。 现在,信息和线路的对象都来发挥作用显著要特别注意。 钢弦的自己的真实本性的数量,并且他们只在合适的时间,合适的地点体现。

正则表达式加强线的可能性,但需要自尊。 调试正则表达式在他的工作,即使它可以模拟,没有太多有趣的想法。

了解RegExp对象的结构和逻辑,这意味着对象的字符串,语法和JavaScript的语义 - 一个真正的安全和可靠的代码,每个网页的稳定运行,该网站作为一个整体。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhcn.delachieve.com. Theme powered by WordPress.