包含javascript正则表达式的词条
JavaScript中可以使用正则表达式么?如果能,该如何使用呢?
首先肯定的是JavaScript中是可以使用正则表达式的。
下面我就借鉴秒秒学上的内容,简单说下。
在没有了解正则表达式之前,是很难理解它的强大功能的,我们先来看一个在JavaScript中使用正则表达式的语句。
//创建正则表达式,这和声明字符串很相似,但hello不是放在双引号中,而是在双斜杠中’//’。
var myRE = /hello/;
示例中创建正则表达式的代码其实是简写,完整写法为:var myRE = new RegExp(“hello”);
/*
*使用正则表达式在字符串中查找信息。
*下面代码使用test方法匹配字符串,这里在myString中匹配myRE中的”hello”字符串,
*若myString中能匹配到test方法,则返回true,否则返回false。匹配过程是大小写敏
*感的。
*/
var myString = “Does this sentence have the word hello in it?”
if( myRE.test(myString) ) {
alert(“Yes”);
}
test方法只返回true和false,而使用search方法能返回”hello”在myString中第一次出现的下标。
介绍了JavaScript中使用正则表达式的用法后,下面我们来说下正则表达式本身。
在刚刚的示例中,我们用正则表达式匹配的是字符串hello。但很多时候需要匹配的字符串是比较复杂的,如电子邮箱的格式。这时我们就要使用由普通字符以及特殊字符组成的文字模式。特殊字符也许对不了解正则表达式的人来说就是一串乱七八糟的字符,但其实就是因为有了这些乱糟糟的字符,才能使正则表达式好些的强大。下面我们来了解下正则表达式中的特殊字符:
通过普通字符以及特殊字符可以组成复杂的正则表达式。如下是一个逐渐复杂的示例:
其实上面的正则表达式并不算复杂。很多常用的正则表达式可以在网上找到,不用我们自己编写,如:
匹配电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
匹配URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
复杂正则表达式的编写并不简单,题主只要先大概的了解即可,希望能帮助你入门,推荐你去一个不错的自学网站?秒秒学上过一遍基础知识。
javascript 正则表达式问题:
*、?、+、{n}、{n,m}这几个表示匹配次数的符号默认都是贪婪匹配,意思就是以这几个符号前面的一个字符或子表达式能匹配的字符串连续出现次数在这几个符号所能表示的次数范围内最多的字符串作为匹配结果。这些符号后面加?号表示懒惰匹配,表示以次数出现最少的匹配。
?表示匹配0或1次,只要前面的字符或表达式能匹配的字符串出现一次,出现的就会被匹配。正好这里的ba后面有个d,符合出现1次的要求,所以会把d匹配。如果写成bad??,匹配的就是ba了。
*表示匹配0或多次,同样默认是贪婪匹配,会以它前面的子表达式([bd]ad?)在目标字符串中能匹配到的结果连续次数最多的条件进行匹配。([bd]ad?)能在"baddad"中连续匹配2次,所以就把这连续匹配到的结果作为一次整体匹配结果。如果在*后面加?,写成([bd]ad?)*?,则表示以([bd]ad?)出现0次进行匹配,匹配到的结果当然就是空了。
另外出现这样的两个结果是因为match方法的参数即正则没有加g(全局匹配模式),所以正则整体只匹配一次,匹配到的结果作为结果数组的第一个元素,正则中第一个子表达式在结果中匹配的结果作为结果数组的第二元素,正则中第二个子表达式在结果中匹配的结果作为结果数组的第三元素,以此类推。这里只有1个子表达式,所以([bd]ad?)在正则整体匹配到的结果中匹配的结果dad放到了结果数组的第二个元素。

JavaScript正则表达式中 ?: 是什么意思
1.什么 是正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
正则表达式并不是属于某种语言的,它是一门独立的语言,几乎在所有的编程语言中都提供了相关支持(Javascript、PHP、Java、C++)
以SQL语言为例:搜索功能
精准匹配:
\$sql = “select * from goods where title=’Nokia N95’”; //返回某个固定的结果
模糊匹配:
\$sql = “select * from goods where title like ‘%Nokia N95%’”; //返回某种满足条件的结果
所以由此可知,正则表达式也是一种模糊匹配。
2.正则 表达式应用场景
① 数据隐藏 李先生 一等奖 139****635
② 数据验证 手机验证、邮箱验证、IP地址验证
③ 数据采集 网站后台都可以集成一个按钮(数据采集)
④ 数据检索
3.快速入门
1)查找一个字符串中是否具有数字“8”
运行结果:
2)查找一个字符串中是否具有数字
运行结果:
3)查找一个字符串中是否具有非数字
运行结果:
JavaScript 正则表达式 转义的使用方法
首先,你是用字符串构造一个正则,在字符串里反斜杠就转义一次。
然后字符串构造为正则的时候会再次对串中的反斜杠进行转义。
所以对于'\at'进行匹配,应该是四个反斜杠。
或者用这种语法:
var re1 = /.at/g;
var re3 = /\.at/g;
// match '\at'
var re4 = /\\at/g;
javascript正则表达式
/*
@param?str?the?string?to?calc?length
@param?autotrim?auto?trim?blank?char.?default?:?false
*/
function?getAbsLength(str,?autotrim)?{
????if?(typeof?str?===?'undefined')?return?0;
????if?(str?==?null)?return?0;
????//?trim????
????var?reg_trim?=?/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
????var?reg_chinese_char?=?/[\u4e00-\u9fa5]/;
????autotrim?=?!!autotrim;
????str?=?autotrim???(str?+?"").replace(reg_trim,?"")?:?(str?+?"");
????var?orig_len?=?str.length;
????var?absLen?=?0;
????for?(var?i?=?0;?i??orig_len;?i++)?{
????????if?(reg_chinese_char.test(str.charAt(i)))?{
????????????//?chinese,?length=2
????????????absLen?+=?2;
????????}?else?{
????????????absLen?+=?1;
????????}
????}
????return?absLen;
}
除了中文,其它都算是一个字符的。。
/正斜杠在javascript正则表达式中怎么表示?
/正斜杠在javascript正则表达式中可以\/表示,比如
var?reg?=?/\//;
正则表达式中转义字符是\(反斜杠),正则表达式中要匹配一下字符本身时需要转义:
$,匹配输入字符串的结尾位置。如果设置了?RegExp?对象的?Multiline?属性,则?$?也匹配?‘\n'?或?‘\r'。要匹配?$?字符本身,请使用?\$。
( ),标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用?\(?和?\)。
*,匹配前面的子表达式零次或多次。要匹配?*?字符,请使用?\*。
+,匹配前面的子表达式一次或多次。要匹配?+?字符,请使用?\+。
.,匹配除换行符?\n之外的任何单字符。要匹配?.,请使用?\。
[ ],标记一个中括号表达式的开始。要匹配?[,请使用?\[。
?,匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配???字符,请使用?\?。
\,将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如,?‘n'?匹配字符‘n'。'\n'?匹配换行符。序列?‘\\'?匹配?“\”,而?‘\('?则匹配?“(”。
^,匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配?^?字符本身,请使用?\^。
{ },标记限定符表达式的开始。要匹配?{,请使用?\{。
|,指明两项之间的一个选择。要匹配?|,请使用?\|。