① 求一段javascript正則表達式,100分
以前搜集老改悶了很久 全給你了
匹配中文字元的正則表達式: [\u4e00-\u9fa5]
匹配雙位元組字元(包括漢字在內):[^\x00-\xff]
匹配空行的正則表達式:\n[\s| ]*\r
匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正則表達式:(^\s*)|(\s*$)
匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網址URL的正則表達式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
(1)應用:計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1)
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
(2)應用:javascript中沒有像vbscript那樣的trim函數,我們侍彎就可以利用這個表達式來實現
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
(3)應用:利用正則表達式分解和轉換IP地址
function IP2V(ip) //IP地址轉換成對應數值
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正則表達式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}
(4)應用:從URL地址中提取文件名的javascript程序
s="http://www.9499.net/page1.htm";
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2") ; //Page1.htm
(5)應用:利用正則表達式限制網頁表單里的文本框輸入內容
用正則表達式限制只能輸入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用殲如正則表達式限制只能輸入全形字元: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正則表達式限制只能輸入數字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正則表達式限制只能輸入數字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
====================================================
正則表達式大全
正則表達式用於字元串處理,表單驗證等場合,實用高效,但用到時總是不太把握,以致往往要上網查一番。我將一些常用的表達式收藏在這里,作備忘之用。本貼隨時會更新。
匹配中文字元的正則表達式: [\u4e00-\u9fa5]
匹配雙位元組字元(包括漢字在內):[^\x00-\xff]
應用:計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1)
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
匹配空行的正則表達式:\n[\s| ]*\r
匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正則表達式:(^\s*)|(\s*$)
應用:javascript中沒有像vbscript那樣的trim函數,我們就可以利用這個表達式來實現,如下:
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
利用正則表達式分解和轉換IP地址:
下面是利用正則表達式匹配IP地址,並將IP地址轉換成對應數值的javascript程序:
function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正則表達式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}
不過上面的程序如果不用正則表達式,而直接用split函數來分解可能更簡單,程序如下:
var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網址URL的正則表達式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
利用正則表達式去除字串中重復的字元的演算法程序:[註:此程序不正確,原因見本貼回復]
var s="abacabefgeeii"
var s1=s.replace(/(.).*\1/g,"$1")
var re=new RegExp("["+s1+"]","g"?瓊?渦獢p?????浜睹扥潛桴牥摜極慢?瑨m?)
var s2=s.replace(re,"")
alert(s1+s2) //結果為:abcefgi
我原來在CSDN上發貼尋求一個表達式來實現去除重復字元的方法,最終沒有找到,這是我能想到的最簡單的實現方法。思路是使用後向引用取出包括重復的字元,再以重復的字元建立第二個表達式,取到不重復的字元,兩者串連。這個方法對於字元順序有要求的字元串可能不適用。
得用正則表達式從URL地址中提取文件名的javascript程序,如下結果為page1
s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
利用正則表達式限制網頁表單里的文本框輸入內容:
用正則表達式限制只能輸入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正則表達式限制只能輸入全形字元: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正則表達式限制只能輸入數字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正則表達式限制只能輸入數字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
補充:
^\d+$ //匹配非負整數(正整數 + 0)
^[0-9]*[1-9][0-9]*$ //匹配正整數
^((-\d+)|(0+))$ //匹配非正整數(負整數 + 0)
^-[0-9]*[1-9][0-9]*$ //匹配負整數
^-?\d+$ //匹配整數
^\d+(\.\d+)?$ //匹配非負浮點數(正浮點數 + 0)
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮點數
^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匹配非正浮點數(負浮點數 + 0)
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配負浮點數
^(-?\d+)(\.\d+)?$ //匹配浮點數
^[A-Za-z]+$ //匹配由26個英文字母組成的字元串
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字元串
^[a-z]+$ //匹配由26個英文字母的小寫組成的字元串
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字元串
^\w+$ //匹配由數字、26個英文字母或者下劃線組成的字元串
^[\w-]+(\.[\w?瓊?渦獢p?????浜睹扥潛桴牥摜極慢?瑨m?-]+)*@[\w-]+(\.[\w-]+)+$ //匹配email地址
^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匹配url
利用正則表達式去除字串中重復的字元的演算法程序:
var s="abacabefgeeii"
var s1=s.replace(/(.).*\1/g,"$1")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2) //結果為:abcefgi
===============================
如果var s = "abacabefggeeii"
結果就不對了,結果為:abeicfgg
正則表達式的能力有限
RE: totoro
謝謝你的指點,這個javascript正則表達式程序演算法確實有問題,我會試著找更好的辦法!!!
1.確認有效電子郵件格式
下面的代碼示例使用靜態 Regex.IsMatch 方法驗證一個字元串是否為有效電子郵件格式。如果字元串包含一個有效的電子郵件地址,則 IsValidEmail 方法返回 true,否則返回 false,但不採取其他任何操作。您可以使用 IsValidEmail,在應用程序將地址存儲在資料庫中或顯示在 ASP.NET 頁中之前,篩選出包含無效字元的電子郵件地址。
[Visual Basic]
Function IsValidEmail(strIn As String) As Boolean
' Return true if strIn is in valid e-mail format.
Return Regex.IsMatch(strIn, ("^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")
End Function
[C#]
bool IsValidEmail(string strIn)
{
// Return true if strIn is in valid e-mail format.
return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}
2.清理輸入字元串
下面的代碼示例使用靜態 Regex.Replace 方法從字元串中抽出無效字元。您可以使用這里定義的 CleanInput 方法,清除掉在接受用戶輸入的窗體的文本欄位中輸入的可能有害的字元。CleanInput 在清除掉除 @、-(連字元)和 .(句點)以外的所有非字母數字字元後返回一個字元串。
[Visual Basic]
Function CleanInput(strIn As String) As String
' Replace invalid characters with empty strings.
Return Regex.Replace(strIn, "[^\w\.@-]", "")
End Function
[C#]
String CleanInput(string strIn)
?瓊?渦獢p?????浜睹扥潛桴牥摜極慢?瑨m?{
// Replace invalid characters with empty strings.
return Regex.Replace(strIn, @"[^\w\.@-]", "");
}
3.更改日期格式
以下代碼示例使用 Regex.Replace 方法來用 dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式。
[Visual Basic]
Function MDYToDMY(input As String) As String
Return Regex.Replace(input, _
"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", _
"${day}-${month}-${year}")
End Function
[C#]
String MDYToDMY(String input)
{
return Regex.Replace(input,
"\\b(?<month>\\d{1,2})/(?<day>\\d{1,2})/(?<year>\\d{2,4})\\b",
"${day}-${month}-${year}");
}
Regex 替換模式
本示例說明如何在 Regex.Replace 的替換模式中使用命名的反向引用。其中,替換表達式 ${day} 插入由 (?<day>...) 組捕獲的子字元串。
有幾種靜態函數使您可以在使用正則表達式操作時無需創建顯式正則表達式對象,而 Regex.Replace 函數正是其中之一。如果您不想保留編譯的正則表達式,這將給您帶來方便
4.提取 URL 信息
以下代碼示例使用 Match.Result 來從 URL 提取協議和埠號。例如,「http://www.contoso.com:8080/letters/readme.html」將返回「http:8080」。
[Visual Basic]
Function Extension(url As String) As String
Dim r As New Regex("^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/", _
RegexOptions.Compiled)
Return r.Match(url).Result("${proto}${port}")
End Function
[C#]
String Extension(String url)
{
Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/",
RegexOptions.Compiled);
return r.Match(url).Result("${proto}${port}");
}
今天有網友問:如何用正則表達式表示要麼是數字要麼是字母 是字母的話只能是一個字母 數字則無所謂?
我的回答是:
^[a-zA-Z]$|^\d+$
② js 正則表達式 提取 "\" 之間的字元。比如說,我的字元串是「\0000\00001\0002\00003\"如何提取其中的數字
這樣規律的字元串何必用正則呢,直接用split不是更好么?
var str="\0000\00001\0002\00003\";
var strarr=str.split('\\');
③ split(/;/g) /exp/是正則表達式,那/g是啥啊
/g是正則表達式的參數,加上/g表明可以進行全局匹配。比如:
"1234".match(\d);//返回「1」滲笑基
"1234".match(\d,/g);/升碰/返回「1,2,3,4」
不過這個參數在split()方法叢謹中沒有作用,是可有可無的。
④ js中有沒有類似php中的basename 和 explode 方法
1.basename在js中沒有對應方法,物讓不過可以自己寫:
function basename(str1)
{
str2="/"
var s = str1.lastIndexOf(str2);
if (s==-1) {
str2="\\"
var s = str1.lastIndexOf(str2);
}
if (s==-1) alert("字元串非法")
else{
return(str1.substring(s+1,str1.length));
}
return ""
}
2.explode在js中有split方法對應:
split 方法
應用於:String 對象
將一個告螞攜字元串分割為子字元串,然後將結果作為字元串數組返回。
stringObj.split([separator[, limit]])
參數
stringObj
必選項。要被分解的 String 對象或文字。該對象不會被 split 方法修改。
separator
可選項。字元串或正則表達式對象,它標識了分隔字元串時使用的襪伏是一個還是多個字元。如果忽略該選項,返回包含整個字元串的單一元素數組。
limit
可選項。該值用來限制返回數組中的元素個數。
說明
split 方法的結果是一個字元串數組,在 stingObj 中每個出現 separator 的位置都要進行分解。separator 不作為任何數組元素的部分返回。
示例
下面的示例演示了 split 方法的用法。
function SplitDemo(){
var s, ss;
var s = "The rain in Spain falls mainly in the plain.";
// 在每個空格字元處進行分解。
ss = s.split(" ");
return(ss);
}
⑤ js的split分割問題:通過<br>或<br/>進行分割,如何使用正則表達式來表示
""
vars="dog<br/>cat<br>whale".replace("<br/>","<br>");
varstr[]=s.split("<br>");
⑥ javascript replace 問題,正則表達式含變數
哥哥你非得用正則一個一個匹配嗎..本來正則的意義就是讓你在不知道具體值的情況下進行匹配的..你要非這么做的話
innerhtml.replace(/{(\d+)}/,function(a,b){return data.arrColnum[b-1];});
你匹配裡面的數字,把數字傳進arrColnum
⑦ split("\\s{1,}")裡面的正則表達式什麼意思
一樓回答准確 ,補充之:\s表示空格,{1,}表示1一個以上 ,\\s第一個、是你的JAVA或者C#程序的轉義字元,轉義後面的\ 哈哈
⑧ 如何用js正則拆分斜杠/之間的字元
如果非要匹配子串的模式,當然可以這樣 url.match(/.*?\//g)
只要手動在url結尾補上"/" 就能把所有字串過濾出來
當然對於這種url來說 要分割"/",當然是split最方便了,要知道split也是正則表達式,只不過匹配的是分隔符而已
⑨ split()方法
1、定義和用法
split() 方法用於把一個字元串分割成字元串數組。
2、語法
stringObject.split(separator,howmany)
3、參數與描述
separator:必需。字元串或正則表達式,從該參數指定的地方分割 stringObject。
howmany:可選。該參數可指定返回的數組的最大長度。如果設置了該參數,返回的子串不會多於這個參數指定的數組。如果沒有設置該參數,整個字元串都會被分割,不考慮它的長度。
4、返回值
一個字元串數組。該數組是通過在 separator 指定的邊界處將字元串 stringObject 分割成子串創建的。返回的數組中的字串不包括 separator 自身。
但是,如果 separator 是包含子表達式的正則表達式,薯伍那麼返回的數組中包括與這些子表達式匹配的字串(但不包括與整個正則表達式匹配的文本)。
5、提示和注釋
注釋:如果把空字元串 ("") 用作 separator,那麼 stringObject 中的每個字元之間都會被念肢分割。
注釋:String.split() 執行的操作與 Array.join 執行的操作是相反的。
擴仔手世展資料:
split()方法使用實例:
例子1
在本例中將分割結構更為復雜的字元串:
"2:3:4:5".split(":")//將返回["2", "3", "4", "5"]
"|a|b|c".split("|")//將返回["", "a", "b", "c"]
例子2
使用下面的代碼,可以把句子分割成單詞:
var words = sentence.split(' ')
或者使用正則表達式作為 separator:
var words = sentence.split(/s+/)
例子3
如果希望把單詞分割為字母,或者把字元串分割為字元,可使用下面的代碼:
"hello".split("")//可返回 ["h", "e", "l", "l", "o"]
若只需要返回一部分字元,請使用 howmany 參數:
"hello".split("", 3)//可返回 ["h", "e", "l"]
⑩ 請問split("\\.")是什麼意思(JAVA代碼)
1. 首先要明白split方法的參數含義:
public String[] split(String regex)根據給定昌搜的正則表達式的匹配來拆分此字元串。
2. 然後就要明確正則表達式的含義了:
'.'點 匹配除「 」和" "之外的任何單個字元。
''表示轉義字元,而雙重轉義相當於原意,
3. 因此「\.」和「.」同意
4.全句即根據'.'拆分字元串,符合ip拆解需求
正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。
許多程序設計語言都支持利用正則表達式燃敏進行字元串操作。例如,在Perl中就內建了一個功能強大的正則表達式引擎。正則表達式這個概念最初是由Unix中的工具軟體(例如sed和grep)普及開的。正則表達式通常縮寫成「regex」,單數有regexp、regex,復數有regexps、regexes、regexen。
希望能皮迅枝幫到您