JS-正则表达式译文
原文地址:https://www.sitepoint.com/expressions-javascript
本文更新于 2016.06.02 ,添加了 CodePen 演示,更新了案例代码,重写了结论并且修改了格式问题。
如果你曾经用 Perl 编程,或者必须以 Unix 系统管理员身份工作,那么你也许早已熟悉正则表达
本文中,我将讲解到底什么是正则表达式以及正则表达式可以用来干什么。接着我将呈现一个正则表达式常见特点的总体概念()。最后我将以 JS 中正则表达式如何使用来进行结尾,使用一个或者两个实际例子来帮助理解概念。。。。
Basic Syntax(基本语法)
首先,上标符 ^
用于表明字符串的开始,而美元符 $
用于表明字符串的结尾。
JavaScript //Matches "Isn't JavaScript great?"
^JavaScript //Matches "JavaScript rules!",
// not "What is JavaScript?"
JavaScript$ //Matches "I love JavaScript",
// not "JavaScript is great!"
^JavaScript$ //Matches "JavaScript", and nothing else
显然,你有时候会需要使用 ^
$
或者其他的特殊符号来代表字符串搜索时的特殊字符,而并不是使用正则表达式语法中这些字符的特殊含义。要移除这些字符的特殊含义,可以在前面添加一个反斜杠:
\$\$\$ //Matches "Show me $$$!"
方括号用于定义符合的字符集。例如,下面的正则表达式将会匹配 1 到 5 的任意数字。
[12345] //Matches "1" and "3", but not "a" or "12"
也可以指定数字或者字母的范围。
[1-5] //Same as previous example
[a-z] //Matches any lowercase letter (from the English alphabet)
[0-9a-zA-Z] //Matches any letter or digit
方括号最前面增加上标符号 ^
,你可以反转字符集,意味着集合将匹配任何没有被列出的字符:
[^a-zA-Z] //Matches anything except a letter
?
+
*
也都有一些特殊含义。尤其是 ?
,表示前面的字符是可选的,+
意味着前面的字符可以有一个或者多个,*
意味着前面的字符有 0 个或者多个。
bana?na //Matches "banana" or "banna",
// but not "banaana".
bana+na //Matches "banana" or "banaana",
// but not "banna".
bana*na //Matches "banna", "banana" and "banaaana",
// but not "bnana".
^[a-zA-Z]+$ //Matches any string of one or more letters and nothing else.
小括号可以用来将字符串组合起来作为一个整体应用 ?
+
*