2022年5月25日 星期三

jQuery Table AddRow plugin

0

Enter Your Information (Max 3 Email)
Email
Email

# 
<table border="1">
<tr><td colspan="3">Enter Your Information (Max 3 Email)</td></tr>
<tr><td>Email</td><td><input type="text" size="24"/></td>
<td><input type="button" class="delRow" value="Delete Row"/></td></tr>
<tr><td>Email</td><td><input type="text" size="24"/></td>
<td><input type="button" class="delRow" value="Delete Row"/></td></tr>
<tr><td colspan="3" align="right">
<input type="button" class="addRow-Max3" value="Add Row"/></td></tr>
</table>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jquery.table.addrow.js"></script>
<script type="text/javascript">
(function($){
 $(document).ready(function(){
  $(".addRow-Max3").btnAddRow({maxRow:3});
  $(".delRow").btnDelRow();
 });
})(jQuery);
</script>
jQuery Plugin Source Code
# 



http://www.examplet.buss.hk/jquery/table.addrow.php

Slow MySql Server Performance - What and How to check?

0

Slow MySql Server Performance - What and How to check?


Log slow queries- If your system has a ton of queries, it gets tougher to find out which queries are slowing your system. MySQL provides a tool to log slow queries for further analysis https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html


EXPLAIN Extended command shows details about your queries when your have no idea what is happening https://dev.mysql.com/doc/refman/8.0/en/explain-extended.html


To speed up your queries use Index - A good practice is add index by seeing which fields are in the WHERE clause add index for them. Also if you are retrieving all fields from a table, the query gets slower by fetching all data from disk. In SELECT query you should specify which fields you need to bring instead to bring them all with *

Not 
SELECT * FORM xTable ;

Yes
SELECT ID, Name, Addr FORM xTable ; 

Make use of Query Cache https://dev.mysql.com/doc/refman/5.7/en/query-cache-configuration.html

SHOW VARIABLES LIKE 'have_query_cache';

Make sure that your MySQL server configuration file options are optimized according to your hardware https://dev.mysql.com/doc/refman/8.0/en/option-files.html


Make sure that you are using optimized data types while creating a table structure For example "Comments" fields has size of 256 characters, reply it to MYSQL with a field with type VARCHAR(256) instead of using TEXT. The query will be much faster.



rocedure_Analyse() can help you in finding optimal data types:

http://www.mysqlperformanceblog.com/2009/03/23/procedure-analyse/

http://dev.mysql.com/doc/refman/5.0/en/procedure-analyse.html

http://dba.stackexchange.com/questions/53229/slow-mysql-server-performance-what-and-how-to-check

2022年5月20日 星期五

正則表達式 (regex) 各程式語言使用方法 (part 5)

0

#Java

public class RegexTestStrings {
  public static final String EXAMPLE_TEST = "This is my small example "
      + "string which I'm going to " + "use for pattern matching.";

  public static void main(String[] args) {
    System.out.println(EXAMPLE_TEST.matches("\\w.*"));
    String[] splitString = (EXAMPLE_TEST.split("\\s+"));
    System.out.println(splitString.length);// should be 14
    for (String string : splitString) {
      System.out.println(string);
    }
    // replace all whitespace with tabs
    System.out.println(EXAMPLE_TEST.replaceAll("\\s+", "\t"));
  }
} 


#PHP

$str = 'a1234';
if (preg_match("/^[a-zA-Z0-9]{4,16}$/", $str)) {
    echo "驗證成功";
} else {
    echo "驗證失敗";
}

#perl 
print $str = "a1234" =~ m:^[a-zA-Z0-9]{4,16}$: ? "COMFIRM" : "FAILED";




正則表達式 (regex) 範例 (part 4)

0



只能輸入1個數字 
表達式 \d$
描述 匹配一個數字
匹配的例子 0,1,2,3
不匹配的例子

只能輸入n個數字  
表達式\d{8}
描述匹配8個數字
匹配的例子12345678,22223334,12344321
不匹配的例子

只能輸入至少n個數字 
表達式\d{8,}
描述匹配最少n個數字
匹配的例子12345678,123456789,12344321
不匹配的例子

只能輸入m到n個數字 
表達式\d{7,8}$
描述匹配m到n個數字
匹配的例子12345678,1234567
不匹配的例子123456,123456789

只能輸入數字  
表達式[0-9]*$
描述匹配任意個數字
匹配的例子12345678,1234567
不匹配的例子E,

只能輸入某個區間數字  
表達式[12-15]$
描述匹配某個區間的數字
匹配的例子12,13,14,15
不匹配的例子

只能輸入0和非0打頭的數字  
表達式(0|[1-9][0-9]*)$
描述可以為0,第一個數字不能為0,數字中可以有0
匹配的例子12,10,101,100
不匹配的例子01,

只能輸入實數  
表達式[-+]?\d+(\.\d+)?$
描述匹配實數
匹配的例子18,+3.14,-9.90
不匹配的例子.6,33s,67-99

只能輸入n位小數的正實數  
表達式^[0-9]+(.[0-9]{n})?$以^[0-9]+(.[0-9]{2})?$為例
描述匹配n位小數的正實數
匹配的例子2.22
不匹配的例子2.222,-2.22,

只能輸入mn位小數的正實數  
表達式^[0-9]+(.[0-9]{m,n})?$以^[0-9]+(.[0-9]{1,2})?$為例
描述匹配m到n位小數的正實數
匹配的例子2.22,2.2
不匹配的例子2.222,-2.2222,

只能輸入非0的正整數  
表達式^/+?[1-9][0-9]*$
描述匹配非0的正整數
匹配的例子2,23,234
不匹配的例子0,-4,

只能輸入非0的負整數 
表達式^/-[1-9][0-9]*$
描述匹配非0的負整數
匹配的例子-2,-23,-234
不匹配的例子0,4,

只能輸入n個字符 
表達式^.{n}$ 以^.{4}$為例
描述匹配n個字符,注意漢字只算1個字符
匹配的例子1234,12we,123清,清清月兒
不匹配的例子0,123,123www,

只能輸入英文字符 
表達式^.[A-Za-z]+$為例
描述匹配英文字符,大小寫任意
匹配的例子Asp,WWW,
不匹配的例子0,123,123www,

只能輸入大寫英文字符 
表達式^.[AZ]+$為例
描述匹配英文大寫字符
匹配的例子NET,WWW,
不匹配的例子0,123,123www,

只能輸入小寫英文字符 
表達式^.[az]+$為例
描述匹配英文大寫字符
匹配的例子asp,csdn
不匹配的例子0,NET,WWW,

只能輸入英文字符+數字 
表達式^.[A-Za-z0-9]+$為例
描述匹配英文字符+數字
匹配的例子1Asp,W1W1W,
不匹配的例子0,123,123,www,

只能輸入英文字符/數字/下劃線 
表達式^/w+$為例
描述匹配英文字符或數字或下劃線
匹配的例子1Asp,WWW,12,1_w
不匹配的例子3#,2-4,w#$,

密碼舉例 
表達式^.[a-zA-Z] /w{m,n}$
描述匹配英文字符開頭的mn位字符且只能數字字母或下劃線
匹配的例子
不匹配的例子

驗證首字母大寫 
表達式/b[^/Wa-z0-9_][^/WA-Z0-9_]*/b
描述首字母只能大寫
匹配的例子Asp,Net
不匹配的例子

驗證網址(帶?id=中文)VS.NET2005無此功能 
表達式
^http:////([/w-]+(/.[/w-]+)+(//[/w- .///?%&=/u4e00-/u9fa5]*)?) ?$
描述驗證帶?id=中文
匹配的例子,
http://blog.csdn.net?id=清清月兒
不匹配的例子

驗證漢字 
表達式^[/u4e00-/u9fa5]{0,}$
描述只能漢字
匹配的例子清清月兒
不匹配的例子

驗證QQ號 
表達式[0-9]{5,9}
描述5-9位的QQ號
匹配的例子10000,123456
不匹配的例子10000w,

驗證電子郵件(驗證MSN號一樣)
表達式/w+([-+.´]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
描述注意MSN用非hotmail.com郵箱也可以
匹配的例子aaa@msn.com
不匹配的例子111@1.

驗證身份證號(粗驗,最好服務器端調類庫再細驗證) 
表達式^[1-9]([0-9]{16}|[0-9]{13})[xX0-9]$
描述
匹配的例子15或者18位的身份證號,支持帶X的
不匹配的例子

驗證手機號(包含159,不包含小靈通) 
表達式^13[0-9]{1}[0-9]{8}|^15[9]{1}[0-9]{8}
描述包含159的手機號130-139
匹配的例子139XXXXXXXX
不匹配的例子140XXXXXXXX,

驗證電話號碼號
表達式(不完美方案一((/(/d{3}/)|/d{3}-)|(/(/d{4}/)|/d{4}-))?(/d{8}|/ d{7})
方案二(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|( ^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$) 支持手機號但也不完美
描述
上海:02112345678 3+8位
上海:021-12345678
上海:(021)-12345678
上海:(021)12345678
鄭州:03711234567 4+7位
杭州:057112345678 4+8位
還有帶上分機號,國家碼的情況由於情況非常複雜所以不建議前台做100%驗證,到目前為止似乎也沒有誰能寫一個包含所有的類型 如果誰有更好 的驗證電話的請留言,其實有很多情況本身就是矛盾的。
匹配的例子
不匹配的例子

驗證護照 
表達式
(P/d{7})|G/d{8})
描述驗證P+7個數字和G+8個數字
匹配的例子
不匹配的例子

驗證IP 
表達式
^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9 ]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}| [1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0- 1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2 [0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9] )$
描述驗證IP
匹配的例子192.168.0.1 222.234.1.4
不匹配的例子

驗證域
表達式
^[a-zA-Z0-9]+([a-zA-Z0-9/-/.]+)?/.(com|org|net|cn|com.cn|edu.cn|grv.cn |)$
描述驗證域
匹配的例子csdn.net baidu.com it.com.cn
不匹配的例子192.168.0.1

驗證信用卡
表達式
^((?:4/d{3})|(?:5[1-5]/d{2})|(?:6011)|(?:3[68]/d{2})|( ?:30[012345]/d))[ -]?(/d{4})[ -]?(/d{4})[ -]?(/d{4}|3[4,7]/ d{13})$
描述驗證VISA卡,萬事達卡,Discover卡,美國運通卡
匹配的例子
不匹配的例子

驗證ISBN 國際標準書號
表達式
^(/d[- ]*){9}[/dxX]$
描述驗證ISBN國際標準書號
匹配的例子7-111-19947-2
不匹配的例子

驗證GUID 全球唯一標識符
表達式
^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0- 9]{12}$
描述格式8-4-4-4-12
匹配的例子2064d355-c0b9-41d8-9ef7-9d8b26524751
不匹配的例子

驗證文件路徑和擴展名
表達式
^([a-zA-Z]/:|//)//([^//]+//)*[^//:*?"<>|]+/.txt(l)?$
描述檢查路徑和文件擴展名
匹配的例子E:/mo.txt
不匹配的例子E:/ , mo.doc, E:/mo.doc ,

驗證Html顏色值
表達式
^#?([af]|[AF]|[0-9]){3}(([af]|[AF]|[0-9]){3})?$
描述檢查顏色取值
匹配的例子#FF0000
不匹配的例子


正則表達式 (regex) 實戰 II (part 3)

0



A newspaper (often just called a paper when the context is clear) is a periodical publication containing news, other informative articles (listed below), and usually advertising. A newspaper is usually printed on relatively inexpensive, low-grade paper such as newsprint. The news organizations that publish newspapers are themselves often metonymically called newspapers. Most newspapers now publish online as well as in print. The online versions are called online newspapers or news sites. 60666066

Name : Chan Tai Man
Tel: 24882488 , 2499 2499 , 139 6888 6888
Email : abc@gmail.com, def@yahoo.com
HKID: A123456(7) , A123456(A)
TWID: A168145309
Website : www.google.com
Time: 00:00:00

HKID
\w\d{6}[\(][\daA]\)

正則表達式 (regex) 實戰 I (part 2)

0

基本語法

一個正規表示式通常被稱為一個模式(pattern),為用來描述或者匹配一系列符合某個句法規則的字串。例如:HandelHändelHaendel這三個字串,都可以由「H(a|ä|ae)ndel」這個模式來描述。大部分正規表示式的形式都有如下的結構:
選擇
|豎直分隔符代表選擇。例如「gray|grey」可以匹配grey或gray。
數量限定
某個字元後的數量限定符用來限定前面這個字元允許出現的個數。最常見的數量限定符包括「+」、「?」和「*」(不加數量限定則代表出現一次且僅出現一次):
+加號代表前面的字元必須至少出現一次。(1次、或多次)。例如,「goo+gle」可以匹配googlegoooglegoooogle等;
?問號代表前面的字元最多只可以出現一次。(0次、或1次)。例如,「colou?r」可以匹配color或者colour;
*星號代表前面的字元可以不出現,也可以出現一次或者多次。(0次、或1次、或多次)。例如,「0*42」可以匹配42042004200042等。
匹配
圓括弧可以用來定義操作符的範圍和優先度。例如,「gr(a|e)y」等價於「gray|grey」,「(grand)?father」匹配fathergrandfather
上述這些構造子都可以自由組合,因此,「H(ae?|ä)ndel」和「H(a|ae|ä)ndel」是相同的。
精確的語法可能因不同的工具或程式而異。

運算式全集

正規表示式有多種不同的風格。下表是在PCRE中元字元及其在正規表示式上下文中的行為的一個完整列表,適用於Perl或者Python程式語言(grep或者egrep的正規表示式文法是PCRE的子集):
字元描述
\將下一個字元標記為一個特殊字元、或一個原義字元、或一個向後參照、或一個八進制轉義符。例如,「n」匹配字元「n」。「\n」匹配一個換行符。序列「\\」匹配「\」而「\(」則匹配「(」。
^匹配輸入字串的開始位置。如果設定了RegExp物件的Multiline屬性,^也匹配「\n」或「\r」之後的位置。
$匹配輸入字串的結束位置。如果設定了RegExp物件的Multiline屬性,$也匹配「\n」或「\r」之前的位置。
*匹配前面的子運算式零次或多次。例如,zo*能匹配「z」、「zo」以及「zoo」。*等價於{0,}。
+匹配前面的子運算式一次或多次。例如,「zo+」能匹配「zo」以及「zoo」,但不能匹配「z」。+等價於{1,}。
?匹配前面的子運算式零次或一次。例如,「do(es)?」可以匹配「do」或「does」中的「do」。?等價於{0,1}。
{n}n是一個非負整數。匹配確定的n次。例如,「o{2}」不能匹配「Bob」中的「o」,但是能匹配「food」中的兩個o。
{n,}n是一個非負整數。至少匹配n次。例如,「o{2,}」不能匹配「Bob」中的「o」,但能匹配「foooood」中的所有o。「o{1,}」等價於「o+」。「o{0,}」則等價於「o*」。
{n,m}mn均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,「o{1,3}」將匹配「fooooood」中的前三個o。「o{0,1}」等價於「o?」。請注意在逗號和兩個數之間不能有空格。
?當該字元緊跟在任何一個其他限制符(*,+,?,{n},{n,},{n,m})後面時,匹配模式是非貪婪的。非貪婪模式儘可能少的匹配所搜尋的字串,而預設的貪婪模式則儘可能多的匹配所搜尋的字串。例如,對於字串「oooo」,「o+?」將匹配單個「o」,而「o+」將匹配所有「o」。
.匹配除「\n」之外的任何單個字元。要匹配包括「\n」在內的任何字元,請使用像「(.|\n)」的模式。
(pattern)匹配pattern並獲取這一匹配的子字串。該子字串用於向後參照。所獲取的匹配可以從產生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要匹配圓括號字元,請使用「\(」或「\)」。
(?:pattern)匹配pattern但不獲取匹配的子字串,也就是說這是一個非獲取匹配,不儲存匹配的子字串用於向後參照。這在使用或字元「(|)」來組合一個模式的各個部分是很有用。例如「industr(?:y|ies)」就是一個比「industry|industries」更簡略的運算式。
(?=pattern)正向肯定預查,在任何匹配pattern的字串開始處匹配尋找字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,「Windows(?=95|98|NT|2000)」能匹配「Windows2000」中的「Windows」,但不能匹配「Windows3.1」中的「Windows」。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是從包含預查的字元之後開始。
(?!pattern)正向否定預查,在任何不匹配pattern的字串開始處匹配尋找字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如「Windows(?!95|98|NT|2000)」能匹配「Windows3.1」中的「Windows」,但不能匹配「Windows2000」中的「Windows」。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是從包含預查的字元之後開始
(?<=pattern)反向肯定預查,與正向肯定預查類似,只是方向相反。例如,「(?<=95|98|NT|2000)Windows」能匹配「2000Windows」中的「Windows」,但不能匹配「3.1Windows」中的「Windows」。
(?<!pattern)反向否定預查,與正向否定預查類似,只是方向相反。例如「(?<!95|98|NT|2000)Windows」能匹配「3.1Windows」中的「Windows」,但不能匹配「2000Windows」中的「Windows」。
x|y匹配x或y。例如,「z|food」能匹配「z」或「food」。「(z|f)ood」則匹配「zood」或「food」。
[xyz]字符集合(character class)。匹配所包含的任意一個字元。例如,「[abc]」可以匹配「plain」中的「a」。特殊字元僅有反斜線\保持特殊含義,用於轉義字元。其它特殊字元如星號、加號、各種括弧等均作為普通字元。脫字元^如果出現在首位則表示負值字符集合;如果出現在字串中間就僅作為普通字元。連字元 - 如果出現在字串中間表示字元範圍描述;如果如果出現在首位則僅作為普通字元。
[^xyz]排除型(negate)字符集合。匹配未列出的任意字元。例如,「[^abc]」可以匹配「plain」中的「plin」。
[a-z]字元範圍。匹配指定範圍內的任意字元。例如,「[a-z]」可以匹配「a」到「z」範圍內的任意小寫字母字元。
[^a-z]排除型的字元範圍。匹配任何不在指定範圍內的任意字元。例如,「[^a-z]」可以匹配任何不在「a」到「z」範圍內的任意字元。
\b匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,「er\b」可以匹配「never」中的「er」,但不能匹配「verb」中的「er」。
\B匹配非單詞邊界。「er\B」能匹配「verb」中的「er」,但不能匹配「never」中的「er」。
\cx匹配由x指明的控制字元。例如,\cM匹配一個Control-M或Enter符。x的值必須為A-Z或a-z之一。否則,將c視為一個原義的「c」字元。
\d匹配一個數位字元。等價於[0-9]。
\D匹配一個非數位字元。等價於[^0-9]。
\f匹配一個換頁符。等價於\x0c和\cL。
\n匹配一個換行符。等價於\x0a和\cJ。
\r匹配一個Enter符。等價於\x0d和\cM。
\s匹配任何空白字元,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。
\S匹配任何非空白字元。等價於[^ \f\n\r\t\v]。
\t匹配一個製表符。等價於\x09和\cI。
\v匹配一個垂直製表符。等價於\x0b和\cK。
\w匹配包括底線的任何單詞字元。等價於「[A-Za-z0-9_]」。
\W匹配任何非單詞字元。等價於「[^A-Za-z0-9_]」。
\xn匹配n,其中n為十六進制轉義值。十六進制轉義值必須為確定的兩個數位長。例如,「\x41」匹配「A」。「\x041」則等價於「\x04&1」。正則運算式中可以使用ASCII編碼。.
\num向後參照(back-reference)一個子字串(substring),該子字串與正規表示式的第num個用括弧圍起來的子運算式(subexpression)匹配。其中num是從1開始的正整數,其上限可能是99。例如:「(.)\1」匹配兩個連續的相同字元。
\n標識一個八進制轉義值或一個向後參照。如果\n之前至少n個獲取的子運算式,則n為向後參照。否則,如果n為八進制數位(0-7),則n為一個八進制轉義值。
\nm標識一個八進制轉義值或一個向後參照。如果\nm之前至少有nm個獲得子運算式,則nm為向後參照。如果\nm之前至少有n個獲取,則n為一個後跟文字m的向後參照。如果前面的條件都不滿足,若nm均為八進制數位(0-7),則\nm將匹配八進制轉義值nm
\nml如果n為八進制數位(0-3),且m和l均為八進制數位(0-7),則匹配八進制轉義值nml。
\un匹配n,其中n是一個用四個十六進制數位表示的Unicode字元。例如,\u00A9匹配版權符號(©)。