标题:
[PHP 语言]
[分享]PHP语言一些常用的正则表达式代码
[打印本页]
作者:
jfx
时间:
2015-9-21 21:05
标题:
[分享]PHP语言一些常用的正则表达式代码
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
% [, {4 A4 ]8 J6 h3 u$ X2 f, ~; d
4 U0 g" }8 |% x% v" v
匹配双字节字符(包括汉字在内): [^\x00-\xff]
4 A8 \% F( p4 q1 L# r: `; w
8 a& R+ J- d/ @+ V# L
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
[+ W0 Q( X8 K! v
1 E' o) `4 z, k$ l |
: N6 O }/ w2 B
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
. V+ Z# A2 Q; f! R% O6 k
" p" d8 w$ h- t! ~3 x0 k# [) i
匹配空行的正则表达式: \n[\s| ]*\r
/ {/ D" C$ {1 p& Y2 `8 H3 G1 z
1 [. C n" J* ]4 j. s2 G$ O
匹配HTML标记的正则表达式: /<(.*)>.*<\/>|<(.*) \/>/
4 ^9 S8 y5 J( P3 n
/ p9 P+ P5 |% R4 o/ P# G9 K) p2 g! _8 B, T
匹配首尾空格的正则表达式: (^\s*)|(\s*$)
7 R6 X5 {+ ]$ r
) j7 [ s4 y8 e1 k' o/ C
应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
2 r+ _7 n5 \/ U. L% u& z
# Y3 h& Y& Z* |
+ p, b- y7 F9 ^) l$ v
String.prototype.trim = function() {
/ I {! u1 h" o" ~0 J
return this.replace(/(^\s*)|(\s*$)/g, "");
7 [! v/ r& }/ j) b
$ c! X8 p7 t# n( f& [; k, f8 Z2 s5 |
}
' T/ f: A! A' f8 ?# A @; o
) I. {, w( _- \7 E( \$ x
利用正则表达式分解和转换IP地址:
+ n! x7 y( A6 `' X+ |5 h
, u" {: P2 L7 s+ X5 B" H
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的javascript程序:
7 w0 _( g! q" Z# q
1 e1 S+ G" [2 n0 w) m' l
b" H' B! ^; Q0 D, [
function IP2V(ip) {
% D/ z! w" B0 i6 t- S
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
2 C, `9 s% ~+ x9 l
if(re.test(ip)) {
3 n% H' C' u D' F2 k ?' X
return RegExp.*Math.pow(255,3))+RegExp.*Math.pow(255,2))+RegExp.*255+RegExp.*1
0 ]* W* ?3 { T( q& S r
}
, K3 T. L4 o3 Y0 ^8 \( N6 l
else {
3 o4 k1 ^" U7 v
throw new Error("Not a valid IP address!")
2 f0 z0 D7 D/ A) L. s3 W7 e
}
9 G5 c; O) `) p5 g' {
}
9 }; ^% `' _) Q+ q4 O
; {( u: p& @" N) F
不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
- A3 o1 \0 r) E- j2 o. q
/ a" C3 K! |- u8 R8 _7 h- j
& M% F% N+ X# M" `
var ip="10.100.20.168"
0 @- t% Z. P; X, l; N
ip=ip.split(".")
2 j& j: e; i! v& T* k
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
+ x, ~" D7 p) n4 ^5 E T+ K
" J% g3 r1 \, U) c5 U" Z8 m
% Y5 p" V; t/ O) Z* {
匹配Email地址的正则表达式: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
3 K+ C4 p% \8 F, S! V
/ A% @6 s* i; R
匹配网址URL的正则表达式: http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
% E/ M# i2 a8 n+ @% l0 x
& E2 C/ {; y2 Y: i# i
利用正则表达式去除字串中重复的字符的算法程序:
6 n3 O# x1 D/ z! u! ~) R$ b
1 ^8 A3 x( `* D% u7 l4 y! b, f) W
& [ h5 q9 A4 c
var s="abacabefgeeii"
: N9 \9 u* m5 }+ e' g( t V: T% @
var s1=s.replace(/(.).*/g,"")
; F& k! R# B9 ~* G5 C
var re=new RegExp("["+s1+"]","g")
W( B9 V B8 m: t7 [4 n( o4 A
var s2=s.replace(re,"")
5 e* I$ D9 I! i" f
alert(s1+s2) //结果为:abcefgi
/ W# i6 U! d1 M2 u9 d
1 M! W# m6 u8 ~+ u0 C" V7 W
用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1
% k: Y9 V7 g$ Y1 C
: x7 @4 P1 |3 l# ]+ W& `
0 N+ a2 g) @" I6 D" v6 q
s="http://www.9499.net/page1.htm"
2 l9 B! f0 W, K% R5 c5 T! J
s=s.replace(/(.*\/)([^\.]+).*/ig,"")
' G" _# Z- N6 Q2 G- e
alert(s)
3 ^6 f, w; e6 [) g% A
0 r/ e+ j; p% ^( O2 P* [( I" r% [
8 w8 I* ?! s- L/ N
利用正则表达式限制网页表单里的文本框输入内容:
. S3 E$ {- j0 F" Y& V/ H
% q- G, m* [. E5 a; [
用正则表达式限制只能输入中文:
6 ~+ m! L- T& w2 F R( W8 z
7 _; c& Y) C& }# U" R
/ o* w* q1 d# b0 Q! `, Q
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
$ E6 @2 m. b: S" H0 ]1 e5 t
. V8 {- ^$ G' b( t, _( `
用正则表达式限制只能输入全角字符:
; m/ f7 ?8 Q# q1 r, t r
) V' j. k8 i- n) h% d& Z- Y7 u
! o! W4 }' u4 o3 k( N
onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"
4 X2 }8 C9 b5 }3 w8 N. b
$ c/ f& D0 e; k) N! |8 t% g# S% ]4 V& {
用正则表达式限制只能输入数字:
# k" }8 O& b M" l% q
) o; {6 l/ O3 D9 O; a+ O- _
3 c* z' l/ c6 F. a% H# s- F
onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
3 V5 j/ W9 ]9 j1 R Y
# r! c5 ], I* {# R
. x8 A4 z2 L% M- p& ^
用正则表达式限制只能输入数字和英文:
; S V0 `& J$ Z% V( |% P, N7 J
2 ^$ q* ?5 W" t
! Q3 I$ ~- x: Z" b
onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
, c1 q' ~/ q, u9 w! h
欢迎光临 捷飞网络论坛 (http://bbs.fjbjdd.com/)
Powered by Discuz! 7.2