1. 1. Basic Syntax(基本语法)

原文地址: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.

小括号可以用来将字符串组合起来作为一个整体应用 ? + *