表達式編譯程序js
Ⅰ javascript 編寫一個程序能夠計算表達式((a+b)*10+50*(c-4))*e)%9
functionthisFun(x,y,z){
returnfunction(a,b,c,e){
return(a+b)*x+y*(c-4)*e%z
}
}
vartt=newthisFun(10,50,9);
//tt()//即為你所求函數
望採納
Ⅱ 求一段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表達式語法語句
1.表達式(expressions)
表達式是由運算符構成,並運算產生結果的語法結構。每個表達式都會產生一個值,它可以放在任何需要一個值的地方,比如,作為一個函數調用的參數.下面的每行代碼都是一個表達式:
var a = (5 + 6) / 2; //表達式:(5 + 6) / 2
var b = (function(){ return 25;})(); //表達式: (function(){ return 25;})()
foo(a*b); //表達式:a*b
2.語句(statements)
語句則是由「;(分號)」分隔的句子或命令。如果在表達式後面加上一個「;」分隔符,這就被稱為「表達式語句」。它表明「只有表達式,而沒有其他語法元素的語句」。
var a = (5 + 6) / 2; //整行,賦值語句
if(a>12) { statements} //條件語句
var o = {}; //賦值語句
(function(obj){ obj.b = 23;})(o||{}); //表達式語句
一般的javascript中的語句分為下面幾種:
(1)聲明語句:變數聲明和函數聲明
(2)賦值語句
(3)控制語句:能夠對語句執行順序產生改變,包括條件語句和循環語句,當然還有比較特殊的標簽語句。
(4)表達式語句:這些語句去掉最後分號,都也可當表達式用的。常見的有:對象操作(new、delete)、函數調用(函數執行,必有返回值)等。
var num = 9; //聲明、賦值語句
vloop: //標簽語句
{ //其實這里大括弧可以不需要的,在這里我只想向大家展示一下這種代碼塊結構而已
for(var i=1; i<10; i++) { //循環語句
if(i==num){ //條件語句
break vloop;
}else{
num = num - 1;
}
}
}
console.log(num); //表達式語句,輸出:5
由上面可以看出,表達式和語句還是存在很大區別的,可也說表達式是語句的構成部分,而語句則又可以組成可執行代碼塊。
Ⅳ js中表達式和語句的區別
表達式可以嵌套在別的表達式中,但語句不行。語句只能獨立出現。
在JavaScript中,12aa=35;bb=1+aa; 1+aa++,其中的1+aa就是表達式其中1+aa++就是一個由一個表達式構成的語句。
表達式1+aa是一個可以得出計算結果的式子,而語句是它的執行。
(4)表達式編譯程序js擴展閱讀
基本特點
JavaScript是一種屬於網路的腳本語言,已經被廣泛用於Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。
是一種解釋性腳本語言(代碼不進行預編譯)。
主要用來向HTML(標准通用標記語言下的一個應用)頁面添加交互行為。
可以直接嵌入HTML頁面,但寫成單獨的js文件有利於結構和行為的分離。
跨平台特性,在絕大多數瀏覽器的支持下,可以在多種平台下運行(如Windows、Linux、Mac、Android、iOS等)。
Javascript腳本語言同其他語言一樣,有它自身的基本數據類型,表達式和算術運算符及程序的基本程序框架。Javascript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變數提供存放信息的地方,表達式則可以完成較復雜的信息處理。
日常用途
嵌入動態文本於HTML頁面。
對瀏覽器事件做出響應。
讀寫HTML元素。
在數據被提交到伺服器之前驗證數據。
檢測訪客的瀏覽器信息。
控制cookies,包括創建和修改等。
基於Node.js技術進行伺服器端編程。
Ⅳ js正則表達式之RegExp對象之compile方法 編譯正則表達式
功能說明:該方法可以編譯指定的正則表達式,編譯之後的正則表達式執行速度將會提高,如果正則表達式多次被調用,那麼調用compile方法可以有效的提高代碼的執行速度,如果該正則表達式只能被使用一次,則不會有明顯的效果。
基本語法:objReg.compile(pattern[,flag])
objReg必選項,RegExp對象變數的名稱
pattern
必選項
正則表達式
flag
可選項
匹配選項
復制代碼
代碼如下:
<html>
<script
language="javascript"
type="text/javascript">
//要匹配的字元串
var
objStr="我的手機號13522222222,他的手機號碼13233333333她的手機號碼13988888888";
//設置正則表達式匹配以13開頭的11為手機號碼,全局匹配(這里是匹配移動手機號)
var
reg=new
RegExp("13[4-9](//d){8}","g");
//提示用戶發現移動號碼,然後列印出結果
document.write("發現移動手機號碼");
//調用函數列印匹配的結果
findPhoneNumbers(objStr.match(reg));
//重新編譯正則表達式
reg.compile("13[0-3](//d){8}","g");
document.write("發現聯通手機號碼");
findPhoneNumbers(objStr.match(reg));
//定義輸出返回結果函數
function
findPhoneNumbers(arr){
//使用循環輸出數據
for(var
i=0;i<arr.length;i++){
document.write("<li>"+arr[i]+"<br>");
}
}
</script>
</html>
使用compile方法還可以對指定的正則表達式進行修改並且重新編譯,提高了正則表達式的適應性!
Ⅵ JS正則表達式完整教程30
親愛的讀者朋友,如果你點開了這篇文章,說明你對正則很感興趣。
想必你也了解正則的重要性,在我看來正則表達式是衡量程序員水平的一個側面標准。
關於正則表達式的教程,網上也有很多,相信你也看了一些。
與之不同的是,本文的目的是希望所有認真讀完的童鞋們,都有實質性的提高。
本文內容共有七章,用JavaScript語言完整地討論了正則表達式的方方面面。
如果覺得文章某塊兒沒有說明白清楚,歡迎留言,能力范圍之內,老姚必做詳細解答。
構造正則表達式的方法和創建數學表達式的方法一樣。也就是用多種元字元與運算符可以將小的表達式結合在一起來創建更大的表達式。正則表達式的組件可以是單個的字元、字元集合、字元范圍、字元間的選擇或者所有這些組件的任意組合。
正則表達式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為"元字元")組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字元串。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。