Just another WordPress.com site

10大最佳古怪网站

  【网站名称】:眼睛的幻觉
  【网站链接】:http://www.michaelbach.de/ot/index.html
  【网站简介】:在这里你可以体验各种“空间频率扭曲”,实际上那只是“你的眼睛背叛了你的心”而已
 
  【网站名称】:中式英语
  【网站链接】:http://www.chinglish.de/
  【网站简介】:干货翻译成“FUCKGOODS”,难怪老外一头雾水,而这样的例子可远远不在少数。拜托,明年就要奥运了,别这么丢脸了行不行啊!
 
  【网站名称】:每日笑报
  【网站链接】:http://www.dailyfunnypics.com
  【网站简介】:全世界各地的搞笑达人集体奉献,各种搞怪的漫画、涂鸦、视频应有尽有,日日更新。

  【网站名称】:洋葱
  【网站链接】:http://www.theonion.com/content/index
  【网站简介】:如果有人说这是美国最好的新闻网站,你可千万别信。因为……网站上所有的新闻都是假的,没错,他们是故意的。还不懂吗,生活的最大的笑话就是你认为可信的新闻居然都是假的。

 
  【网站名称】:最搞笑的时光
  【网站链接】:http://www.killsometime.com/
  【网站简介】:各种无厘头的搞笑视频,以及搞笑游戏,不能算是最好的,但很有意思,有空过来看看,当然,前提是你实在闲得没事。
 
1、Google推出的3维聊天空间,可以设计自己的形象和房间
http://www.lively.com/

2、可以在线听和免费下载最新《读者》《科幻世界》等著名杂志有声版,不用再买杂志
http://www.ilisten.cn/ZZ

3、可以一键免费把自己博客印成书的网站
http://blog.mrprint.cn

4、可以修改每一本书内容的在线图书馆
http://www.bookgg.com/library.asp

5、一个比Google还强,每天看别人在搜索什么东西的搜索引擎
http://www.bearsou.com

6、每天可以免费买彩票,每天百万现金奖的精彩网站
http://www.lotcome.com

7、可以访问任何网页的Google隐藏入口
http://www.google.com/gwt/n

8、可以把你的网址缩短的网站
http://tinyurl.com/

9、爱因斯坦写汉字 
http://www.sbfun.org/einstein/index.php

10、你可以在线做个以自己照片做硬币人物的硬币图片,好酷哦!!
http://onlinewahn.de/generator/m-maker.htm

特殊符号大全


♀ ♥ ♡ ☜ ☞ ☎ ☏ ⊙ ◎ ☺ ☻ ► ◄ ♨ ◐ ◑ ↔ ↕ ▪ ▫ ☼ ♦ ▀ ▄ █ ▌ ▐ ░ ▒ ▬ ♦ ◊ ◦ ☼ ♠ ♣
▣ ▤ ▥ ▦ ▩ ◘ ◙ ◈ ♫ ♬ ♪ ♩ ♭ ♪ の ☆→ あ ぃ £ ▧ ▨ ♠ ♣๑•ิ.•ั๑๑۩۞۩๑ ♪ ♬ ⓛⓞⓥⓔ ๑۩ﺴ
♬ ♫ ♪

♯♭ $ ஐﻬ◎ ﻬஐ の ☆→ あ ぃ £ ♥『』Ψ № ∑ ⌒〖〗@ξζ∮ ▓ ∏ 卐【】√ ¤ ╋

☞☜︶ இ ℡.○● 彡 ° ₪ ௫ ★ ☆ ⊙ ☺ ☻ ☼ ♠ ♡ ♣ ♤ ♥ ♦ ♧ ♨ ♩ 〠 〄 ㍿ ♩♪♫♬ 큐 ™

㊣㊚㊛㊙㊝㊊㊋㊌㊍㊎㊏㊐⓪ ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉

◊ ◦☼ ▣ ▤ ▥ ❤ 。◕‿◕。♩ ♭ ♪ の▦ ▩ ◘ ◙ ◈ ♫★☆⊕◎Θ﹏﹋﹌【】〖〗※-『』√∴卐 ≈░ ▒ ∵∴§∮♡♪♬๑•ิ.•ั๑♠♣♧✖♂☼▶▷◀◁★☆⊙☺☻☼♠

→ ♧ ぃ £ ๑۩۞۩๑ ✲ ❈ ✿ ✲ ❈ ➹ ~.~ ◕‿-。 ☀☂☁【】┱ ┲ の♈ ➸ ✓ ✔ ✕ ✖ ✟

☜ ☞ ╰☆╮☎ ☏ ⊙ ◎ ☺ ☻ ► ◄ ♨ ◐ ◑ ♦ ♠ ♣ ✣ ✤ ✥ ✦ ✧ ✩ ✫ ✬ ✭ ✮ ✯ ✰ ✱ ✲ ✳ ❃ ❂
❁ ❀ ✿ ✾ ✽ ✼ ✻ ✺ ✸ ✷ ✶ ✵ ✴ ❄ ❅ ❆ ❇ ❈ ❉ ❊ ❋ ❖ (¤^_^¤) べoべ ⊹⊱⋛⋋۰•● ๑۩ﺴ *.:
。❀*゚’゚・✿.。❤ ●•۰. ◕。◕ 。◕‿◕。╰。✎。╮ ✲:‧。o(>""<)o o(‧”’‧)o ♥ ♡ (◡‿◡✿)
(。→‿←。) (≧ε≦o) (≧∇≦) (ㄒoㄒ) o(╥﹏╥)o ⋌⋚⊰⊹ ⓛⓞⓥⓔ

♟ ☼ ☀ o O # 【】ψ ▓ ► ◄ ▒ ░ ♀♂ √ ╮╭ ╯╰ ァ ┱ ┲ ☆ ★ ♫ ♬ ♪♩♭♪ ▶ △ ▲ γ ō 凸
∩∪ ╦ ╩ ⊙ ◎ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▋▌▍┋ ︻ ︼ ¤ ▽ ㄒ ︶︿ ε >< ┘┌ ∵ ∴ ∷ ︹ ︺ ╬ ╋ ω
㊣ § ■ Θ I し↑↑↓↓← → ↘↙ ↔↕〓 ☆ ★┣┓┏┫×╰ノ◢ ◣ ◥ ◤ Ω ж ф ю Ю ━╃ ╄━ 卍 ┛┗ ┓┏ ◇ ◆
ㄨ⌒ ※ × ◎ ☂ ☜ ☞ ❤ ♡ ♥『』Ψ № ∑ ⌒〖〗@ξζ∮ ▓$ @ * &♦

๑۩๑۩۞۩๑۞۩๑❤ ☄ ✂ ☇ ☈ ⊙ ☊ ☋ ☌☍♞ (◡‿◡✿) εїз © ☸ ☹ ๑•ิ.•ั๑ ♂ ♀ → ╃ ♥ ☑ ☒☢ ☸ ☹ ☺ ☻ΩЖ ۞ ₣₪░▒▓Đ ŧːΦ Ќ

☂ ♨ ☎ ☏ ☆ ★ △ ▲ ♠ ♣ ♧ ♟ ♂ ♀ ♥ ❤ ♡ ♫ ♬ ♪ ♩ ♭ ♪ ☜ ☞ ⊙ ◎ ☺ ☻ ⊕ ¤ ☼ o O
♋ ㊝ ► ◄ ◢ ◣ ◥ ◤ ▽ ▧ ▨ ▣ ▤ ▥ ▦ ▩ ◘ ◙ ▓ ▒ ░ ■ Cafe № @ ㊣ ™ ℡ 凸 ☃ ❣.•● ➸
❝❞ o(‧”’‧)o 。◕‿◕。 べoべ ⊹⊱⋛⋋ ⋌⋚⊰⊹ ◈ ♦ ◊ ◦ ◇ ◆.۰•● ❤ ●•۰.๑۩۞۩๑✿ ﻬஐ╃✖ *°♡﹢
ﺴ ﺴ....ஐ☀ ﻬஐஐ

♡.1 ⊙●○①⊕◎Θ⊙¤㊣★☆♀◆◇◣◢◥▲▼△▽⊿◤ ◥ 

♡.2 ▆ ▇ █ █ ■ ▓ 回 □ 〓≡ ╝╚╔ ╗╬ ═ ╓ ╩ ┠ ┨┯ ┷┏

♡.3 ┓┗ ┛┳⊥﹃﹄┌ ┐└ ┘∟「」↑↓→←↘↙♀♂┇┅ ﹉﹊﹍﹎╭

♡.4 ╮╰ ╯ *^_^* ^*^ ^-^ ^_^ ^︵^ ∵∴∥︱ ︳︴﹏﹋﹌︵︶︹︺

♡.5 【】〖〗@:!/ " _ < > `,.。≈{}~ ~() _ -『』√ $ @ * & # ※

♡.6 卐 々∞Ψ ∪∩∈∏ の ℡ ぁ §∮“”ミ灬ξ№∑⌒ξζω* ㄨ ≮≯ +

♡.7 -×÷﹢﹣±/=∫∮∝ ∞ ∧∨ ∑ ∏ ∥∠ ≌ ∽ ≦ ≧ ≒﹤﹥じ

♡.8 ☆veve↑↓⊙●★☆■♀『』◆◣◥▲Ψ ※◤ ◥ →№←㊣∑⌒〖〗@

♡.9 ξζω□∮〓※∴ぷ▂▃▅▆█ ∏卐【】△√ ∩¤々♀♂∞①ㄨ≡↘↙▂

♡.10 ▂ ▃ ▄ ▅ ▆ ▇ █┗┛╰☆╮ ≠ ▂ ▃ ▄ ▅

♡.1..°∴ ☆...°

♡.2 ♡o(╥﹏╥)o ♥♡ じ☆ve【 오빠 사랑해요 】*° ^_^…….♧♧

♡.3 ┢┦aΡpy ♡^_^♡ ☜♥☞ ☞ ☜ 

♡.4 ︻︼─一 ▄︻┻┳═一 ▄︻┳一 ▄︻┻═┳一 ▄︻┳-一

♡.5 ▄︻┻═┳ ︻┳═一 ▄︻┳一. ▄︻┳═一 ︻┳═一oO

♡.6 -─═┳︻ ∝╬══→ ::======>> ┈━═☆ ┣▇▇▇═─

♡.19 Chris’ Blog™ ♪ ♬ ๑•ิ.•ั๑ ♠ ♣ ✖

♡.20 ♂ ♀ ♥ ♡ ☜ ☞ ☎ ☏ ⊙ ◎ ☺ ☻► ◄ ▧ ▨ ♨ ◐ ◑ ↔ ↕ ▪ ▫

♡.21 ☼ ♦ ▀ ▄ █ ▌ ▐ ░ ▒ ▬ ♦ ◊ ◦ ☼ ♠ ♣ ▣ ▤ ▥

♡.22 ▦ ▩ ◘ ◙ ◈ ♫ ♬ ♪ ♩ ♭ ♪ の ☆→ あ ぃ £ ❤ 。◕‿◕。

♡.ゃōゃ ⊙▂⊙ ⊙0⊙ ⊙︿⊙ ⊙ω⊙ ⊙﹏⊙ ⊙△⊙ ⊙▽⊙

♡.◑▂◐ ◑0◐ ◑︿◐ ◑ω◐ ◑﹏◐ ◑△◐  ◑▽◐

♡.∩▂∩ ∩0∩ ∩︿∩ ∩ω∩ ∩﹏∩ ∩△∩ ∩▽∩

♡.●▂●  ●0●  ●︿●  ●ω●  ●﹏●  ●△●  ●▽●

♡.∪▂∪ ∪0∪ ∪︿∪ ∪ω∪ ∪﹏∪ ∪△∪ ∪▽∪

♡. ≧▂≦ ≧0≦ ≧︿≦ ≧ω≦ ≧﹏≦ ≧△≦ ≧▽≦

♡. >▂< >0< >︿< >ω< >﹏< >△< >▽<

♡. ╯▂╰ ╯0╰ ╯︿╰ ╯ω╰ ╯﹏╰ ╯△╰ ╯▽╰

♡. +▂+ +0+ +︿+ +ω+ +﹏+ +△+ +▽+

♡. ˋ▂ˊ ˋ0ˊ ˋ︿ˊ ˋωˊ ˋ﹏ˊ ˋ△ˊ ˋ▽ˊ

♡. ˇ▂ˇ ˇ0ˇ ˇ︿ˇ ˇωˇ ˇ﹏ˇ  ˇ△ˇ ˇ▽ˇ

♡. ˙▂˙ ˙0˙ ˙︿˙ ˙ω˙ ˙﹏˙ ˙△˙ ˙▽˙

♡. ≡(▔﹏▔)≡ ⊙﹏⊙∥∣° ˋ︿ˊ﹀-# ╯︿╰﹀ (=‵′=)

♡. <(‵^′)>  o(‧""‧)o  (-__-)b \ _ /

♡.  ̄□ ̄||  ——\\(˙<>˙)/——   <("""O""")>

♡. (#‵′)凸  (‵▽′)ψ  (°ο°)~ @  (^人^) (*‧↓˙*)

♡. (O ^ ~ ^ O)  [>\/<] ↓。υ。↓ (;°○° ) ( > c < )

♡. 8 y 1 2 3 4 5 6 7 8 9 与 0-=、`

♡.☀☁☂☃☄❉❊❋❖❤❥❦❧☇☈⊙☊☋☌☍☑☒☢ ☸ ☹ ☺ ☻ ☼ ☽

♡.☾♠♡♢♣♤♥♦♧ ♨ ♩ ✙ ✈ ✉ ✌ ✁ ✎ ✐ ❀ ✰ ❁ ❤ ❥ ❦❧

♡.➳ ➽ 〠 〄 ㍿ ♝ ♞ ➳➴➵㊚㊛㊙℗♯♩♪♫♬♭♮ ☎☏☪♈♨ ºº₪¤큐

♡.« » ™♂✿♥㊣♀♀♂© ® ⁂ ℡ↂ░ ▣ ▤ ▥ ▦ ▧ ▨

♡.▩☯♋♛♞♕✈✎✏┇┅✐✌✍✡✓✔✕✖ ♂ ♀ ♥ ♡

♡.☜ ☞ ☎ ☏ ⊙ ◎ ☺ ☻ ► ◄ ◐ ◑ ↔ ↕☼ ♦♦ ◊ ◘

♡.◙✗✘✚✪✣✤✥✦✧✩✫✬✭✮✯✰

♡.ぁあぃいぅうぇえぉおか がきぎくぐけ

♡.げこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはば

♡.ぱひびぴふぶぷへべぺほぼぽまみむめも

(*∩_∩*)′ ❤。❤ ♠♥♣●︶ε︶●♦

=^。^=oοО o(≧﹏≦)o o(‧”’‧)o

♡~⌒ō⌒~ ..°∴ ☆...°♡ ミ●﹏⊙ミ

⊙▂⊙ ⊙0⊙ ⊙︿⊙  ⊙ω⊙   ⊙﹏⊙  ⊙△⊙  ⊙▽⊙

∪▂∪  ∪0∪  ∪︿∪  ∪ω∪  ∪﹏∪  ∪△∪  ∪▽∪

+▂+  +0+  +︿+  +ω+  +﹏+ +△+  +▽+

︽⊙_⊙︽ (⊙_⊙) (@口@) Σ(@)( ̄ ̄)+ Σ(⊙▽⊙")

SQL SERVER – Insert Data From One Table to Another Table – INSERT INTO SELECT – SELECT INTO TABLE

Following three questions are many time asked on this blog.

How to insert data from one table to another table efficiently?
How to insert data from one table using where condition to anther table?
How can I stop using cursor to move data from one table to another table?

There are two different ways to implement inserting data from one
table to another table. I strongly suggest to use either of the method
over cursor. Performance of following two methods is far superior over
cursor. I prefer to use Method 1 always as I works in all the case.

Method 1 : INSERT INTO SELECT
This method is used when table is already created in the database
earlier and data is to be inserted into this table from another table.
If columns listed in insert clause and select clause are same, they are
are not required to list them. I always list them for readability and
scalability purpose.

USE AdventureWorks
GO
    
----Create TestTable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
    
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (FirstNameLastName)
    
SELECT FirstNameLastName
    
FROM Person.Contact
    
WHERE EmailPromotion 2
    
----Verify that Data in TestTable
SELECT FirstNameLastName
    
FROM TestTable
    
----Clean Up Database
DROP TABLE TestTable
GO

Method 2 : SELECT INTO
This method is used when table is not created earlier and needs to be
created when data from one table is to be inserted into newly created
table from another table. New table is created with same data types as
selected columns.

USE AdventureWorks
GO
    
----Create new table and insert into table using SELECT INSERT
SELECT FirstNameLastName
            
INTO TestTable
    
FROM Person.Contact
    
WHERE EmailPromotion 2
    
----Verify that Data in TestTable
SELECT FirstNameLastName
    
FROM TestTable
    
----Clean Up Database
DROP TABLE TestTable
GO

Both of the above method works with database temporary tables
(global, local). If you want to insert multiple rows using only one
insert statement refer article SQL SERVER – Insert Multiple Records Using One Insert Statement – Use of UNION ALL.

Reference : Pinal Dave (http://www.SQLAuthority.com)

Data import / export with SQL Server Express using DTS Wizard

There are IMHO two major annoyances with SQL Server Express :
 – No Server Agent
 – No Import / Export function (called Data Transformation Services – DTS in SQL Server 2000)
 
Missing the Server Agent means you have to make your own backup (or
other) scheduling, but luckily DTS is possible – it is just not
installed as default with SQL Server Express (SSE). It’s very strange
to me why Microsoft did not just include in the standard install so
that it was available from SQL Server Studio, but I’ll settle for just
being happy that it exists at all!

Check if you already have it by looking for this file: c:\%programfiles%\Microsoft SQL Server\90\DTS\Binn\dtswizard.exe. If you don’t have a ‘DTS’ directory (or even a ‘90′ directory) it has not been installed.

Here is how you get it:
 – It is included in the SQL Server Express Edition Toolkit
– and only that. It you have installed another version of SSE, it works
fine to install this package afterwards without uninstalling the
others. Get it here: http://go.microsoft.com/fwlink/?LinkId=65111
– The DTS Wizard is included in the option “Business Intelligence Development Studio” so be sure to select that for install 
– If you have installed another version of SSE, the installer might report that there is nothing to install. Override this by checking the checkbox that displays the version number (in the installer wizard)

After install has finished, the DTS Wizard is available at
c:\<programfiles>\Microsoft SQL Server\90\DTS\Binn\dtswizard.exe
you might want to make a shortcut, or even include it on the tools menu of SQL Studio.

Addresses
//Address: State code (US)
‘/\\b(?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])\\b/’
//Address: ZIP code (US)
‘\b[0-9]{5}(?:-[0-9]{4})?\b’
 
Columns
//Columns: Match a regex starting at a specific column on a line.
‘^.{%SKIPAMOUNT%}(%REGEX%)’
//Columns: Range of characters on a line, captured into backreference 1
//Iterate over all matches to extract a column of text from a file
//E.g. to grab the characters in colums 8..10, set SKIPAMOUNT to 7, and CAPTUREAMOUNT to 3
‘^.{%SKIPAMOUNT%}(.{%CAPTUREAMOUNT%})’
 
Credit cards
//Credit card: All major cards
‘^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$’
//Credit card: American Express
‘^3[47][0-9]{13}$’
//Credit card: Diners Club
‘^3(?:0[0-5]|[68][0-9])[0-9]{11}$’
//Credit card: Discover
‘^6011[0-9]{12}$’
//Credit card: MasterCard
‘^5[1-5][0-9]{14}$’
//Credit card: Visa
‘^4[0-9]{12}(?:[0-9]{3})?$’
//Credit card: remove non-digits
‘/[^0-9]+/’
 
CSV
//CSV: Change delimiter
//Changes the delimiter from a comma into a tab.
//The capturing group makes sure delimiters inside double-quoted entries are ignored.
‘("[^"\r\n]*")?,(?![^",\r\n]*"$)’
//CSV: Complete row, all fields.
//Match complete rows in a comma-delimited file that has 3 fields per row,
//capturing each field into a backreference.
//To match CSV rows with more or fewer fields, simply duplicate or delete the capturing groups.
‘^("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*)$’
//CSV: Complete row, certain fields.
//Set %SKIPLEAD% to the number of fields you want to skip at the start, and %SKIPTRAIL% to
//the number of fields you want to ignore at the end of each row.
//This regex captures 3 fields into backreferences.  To capture more or fewer fields,
//simply duplicate or delete the capturing groups.
‘^(?:(?:"[^"\r\n]*"|[^,\r\n]*),){%SKIPLEAD%}("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*)(?:(?:"[^"\r\n]*"|[^,\r\n]*),){%SKIPTRAIL%}$’
//CSV: Partial row, certain fields
//Match the first SKIPLEAD+3 fields of each rows in a comma-delimited file that has SKIPLEAD+3
//or more fields per row.  The 3 fields after SKIPLEAD are each captured into a backreference.
//All other fields are ignored.  Rows that have less than SKIPLEAD+3 fields are skipped.
//To capture more or fewer fields, simply duplicate or delete the capturing groups.
‘^(?:(?:"[^"\r\n]*"|[^,\r\n]*),){%SKIPLEAD%}("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*)’
//CSV: Partial row, leading fields
//Match the first 3 fields of each rows in a comma-delimited file that has 3 or more fields per row.
//The first 3 fields are each captured into a backreference.  All other fields are ignored.
//Rows that have less than 3 fields are skipped.  To capture more or fewer fields,
//simply duplicate or delete the capturing groups.
‘^("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*)’
//CSV: Partial row, variable leading fields
//Match the first 3 fields of each rows in a comma-delimited file.
//The first 3 fields are each captured into a backreference.
//All other fields are ignored.  If a row has fewer than 3 field, some of the backreferences
//will remain empty.  To capture more or fewer fields, simply duplicate or delete the capturing groups.
//The question mark after each group makes that group optional.
‘^("[^"\r\n]*"|[^,\r\n]*),("[^"\r\n]*"|[^,\r\n]*)?,("[^"\r\n]*"|[^,\r\n]*)?’
 
Dates
//Date d/m/yy and dd/mm/yyyy
//1/1/00 through 31/12/99 and 01/01/1900 through 31/12/2099
//Matches invalid dates such as February 31st
‘\b(0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.](19|20)?[0-9]{2}\b’
//Date dd/mm/yyyy
//01/01/1900 through 31/12/2099
//Matches invalid dates such as February 31st
‘(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}’
//Date m/d/y and mm/dd/yyyy
//1/1/99 through 12/31/99 and 01/01/1900 through 12/31/2099
//Matches invalid dates such as February 31st
//Accepts dashes, spaces, forward slashes and dots as date separators
‘\b(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}\b’
//Date mm/dd/yyyy
//01/01/1900 through 12/31/2099
//Matches invalid dates such as February 31st
‘(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)[0-9]{2}’
//Date yy-m-d or yyyy-mm-dd
//00-1-1 through 99-12-31 and 1900-01-01 through 2099-12-31
//Matches invalid dates such as February 31st
‘\b(19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])\b’
//Date yyyy-mm-dd
//1900-01-01 through 2099-12-31
//Matches invalid dates such as February 31st
‘(19|20)[0-9]{2}[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])’
 
Delimiters
//Delimiters: Replace commas with tabs
//Replaces commas with tabs, except for commas inside double-quoted strings
‘((?:"[^",]*+")|[^,]++)*+,’
 
Email addresses
//Email address
//Use this version to seek out email addresses in random documents and texts.
//Does not match email addresses using an IP address instead of a domain name.
//Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
//Including these increases the risk of false positives when applying the regex to random documents.
‘\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b’
//Email address (anchored)
//Use this anchored version to check if a valid email address was entered.
//Does not match email addresses using an IP address instead of a domain name.
//Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
//Requires the "case insensitive" option to be ON.
‘^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$’
//Email address (anchored; no consecutive dots)
//Use this anchored version to check if a valid email address was entered.
//Improves on the original email address regex by excluding addresses with consecutive dots such as john@aol…com
//Does not match email addresses using an IP address instead of a domain name.
//Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
//Including these increases the risk of false positives when applying the regex to random documents.
‘^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$’
//Email address (no consecutive dots)
//Use this version to seek out email addresses in random documents and texts.
//Improves on the original email address regex by excluding addresses with consecutive dots such as john@aol…com
//Does not match email addresses using an IP address instead of a domain name.
//Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
//Including these increases the risk of false positives when applying the regex to random documents.
‘\b[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b’
//Email address (specific TLDs)
//Does not match email addresses using an IP address instead of a domain name.
//Matches all country code top level domains, and specific common top level domains.
‘^[A-Z0-9._%-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|biz|info|name|aero|biz|info|jobs|museum|name)$’
//Email address: Replace with HTML link
‘\b(?:mailto:)?([A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4})\b’
 
HTML
//HTML comment
//HTML file
//Matches a complete HTML file.  Place round brackets around the .*? parts you want to extract from the file.
//Performance will be terrible on HTML files that miss some of the tags
//(and thus won’t be matched by this regular expression).  Use the atomic version instead when your search
//includes such files (the atomic version will also fail invalid files, but much faster).
<title>.*?</title>'<html>.*?.*?.*?.*?]*>.*?.*?’
//HTML file (atomic)
//Matches a complete HTML file.  Place round brackets around the .*? parts you want to extract from the file.
//Atomic grouping maintains the regular expression’s performance on invalid HTML files.
<title>)(?>.*?'(?>.*?)(?>.*?)(?>.*?)(?>.*?]*>)(?>.*?).*?’
//HTML tag
//Matches the opening and closing pair of whichever HTML tag comes next.
//The name of the tag is stored into the first capturing group.
//The text between the tags is stored into the second capturing group.
‘<([A-Z][A-Z0-9]*)[^>]*>(.*?)’
//HTML tag
//Matches the opening and closing pair of a specific HTML tag.
//Anything between the tags is stored into the first capturing group.
//Does NOT properly match tags nested inside themselves.
‘<%TAG%[^>]*>(.*?)’
//HTML tag
//Matches any opening or closing HTML tag, without its contents.
‘]*>’
 
IP ADDRESSES
//IP address
//Matches 0.0.0.0 through 999.999.999.999
//Use this fast and simple regex if you know the data does not contain invalid IP addresses.
‘\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b’
//IP address
//Matches 0.0.0.0 through 999.999.999.999
//Use this fast and simple regex if you know the data does not contain invalid IP addresses,
//and you don’t need access to the individual IP numbers.
‘\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b’
//IP address
//Matches 0.0.0.0 through 255.255.255.255
//Use this regex to match IP numbers with accurracy, without access to the individual IP numbers.
‘\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b’
//IP address
//Matches 0.0.0.0 through 255.255.255.255
//Use this regex to match IP numbers with accurracy.
//Each of the 4 numbers is stored into a capturing group, so you can access them for further processing.
‘\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b’
 
Lines
//Lines: Absolutely blank (no whitespace)
//Regex match does not include line break after the line.
‘^$’
//Lines: Blank (may contain whitespace)
//Regex match does not include line break after the line.
‘^[ \t]*$’
//Lines: Delete absolutely blank lines
//Regex match includes line break after the line.
‘^\r?\n’
//Lines: Delete blank lines
//Regex match includes line break after the line.
‘^[ \t]*$\r?\n’
//Lines: Delete duplicate lines
//This regex matches two or more lines, each identical to the first line.
//It deletes all of them, except the first.
‘^(.*)(\r?\n\1)+$’
//Lines: Truncate a line after a regex match.
//The regex you specify is guaranteed to match only once on each line.
//If the original regex you specified should match more than once,
//the line will be truncated after the last match.
preg_replace(‘^.*(%REGEX%)(.*)$’, ‘$1$2’, $text);
//Lines: Truncate a line before a regex match.
//If the regex matches more than once on the same line, everything before the last match is deleted.
preg_replace(‘^.*(%REGEX%)’, ‘$1’, $text);
//Lines: Truncate a line before and after a regex match.
//This will delete everything from the line not matched by the regular expression.
preg_replace(‘^.*(%REGEX%).*$’, ‘$1’, $text);
 
Logs
//Logs: Apache web server
//Successful hits to HTML files only.  Useful for counting the number of page views.
‘^((?#client IP or domain name)\S+)\s+((?#basic authentication)\S+\s+\S+)\s+\[((?#date and time)[^]]+)\]\s+"(?:GET|POST|HEAD) ((?#file)/[^ ?"]+?\.html?)\??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"\s+(?#status code)200\s+((?#bytes transferred)[-0-9]+)\s+"((?#referrer)[^"]*)"\s+"((?#user agent)[^"]*)"$’
//Logs: Apache web server
//404 errors only
‘^((?#client IP or domain name)\S+)\s+((?#basic authentication)\S+\s+\S+)\s+\[((?#date and time)[^]]+)\]\s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)\??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"\s+(?#status code)404\s+((?#bytes transferred)[-0-9]+)\s+"((?#referrer)[^"]*)"\s+"((?#user agent)[^"]*)"$’
 
Numbers
//Number: Currency amount
//Optional thousands separators; optional two-digit fraction
‘\b[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]{2})?\b’
//Number: Currency amount
//Optional thousands separators; mandatory two-digit fraction
‘\b[0-9]{1,3}(?:,?[0-9]{3})*\.[0-9]{2}\b’
//Number: floating point
//Matches an integer or a floating point number with mandatory integer part.  The sign is optional.
‘[-+]?\b[0-9]+(\.[0-9]+)?\b’
//Number: floating point
//Matches an integer or a floating point number with optional integer part.  The sign is optional.
‘[-+]?\b[0-9]*\.?[0-9]+\b’
//Number: hexadecimal (C-style)
‘\b0[xX][0-9a-fA-F]+\b’
//Number: Insert thousands separators
//Replaces 123456789.00 with 123,456,789.00
‘(?<=[0-9])(?=(?:[0-9]{3})+(?![0-9]))’  //Number: integer //Will match 123 and 456 as separate integer numbers in 123.456 ‘\b\d+\b’  //Number: integer //Does not match numbers like 123.456 ‘(?

Passwords

//Password complexity
//Tests if the input consists of 6 or more letters, digits, underscores and hyphens.
//The input must contain at least one upper case letter, one lower case letter and one digit.
‘\A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}\z’

//Password complexity
//Tests if the input consists of 6 or more characters.
//The input must contain at least one upper case letter, one lower case letter and one digit.
‘\A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])\S{6,}\z’

 

File paths
//Path: Windows
‘\b[a-z]:\\[^/:*?"<>|\r\n]*’

//Path: Windows
//Different elements of the path are captured into backreferences.
‘\b((?#drive)[a-z]):\\((?#folder)[^/:*?"<>|\r\n]*\\)?((?#file)[^\\/:*?"<>|\r\n]*)’

//Path: Windows or UNC
‘(?:(?#drive)\b[a-z]:|\\\\[a-z0-9]+)\\[^/:*?"<>|\r\n]*’

//Path: Windows or UNC
//Different elements of the path are captured into backreferences.
‘((?#drive)\b[a-z]:|\\\\[a-z0-9]+)\\((?#folder)[^/:*?"<>|\r\n]*\\)?((?#file)[^\\/:*?"<>|\r\n]*)’

 

Phone numbers
//Phone Number (North America)
//Matches 3334445555, 333.444.5555, 333-444-5555, 333 444 5555, (333) 444 5555 and all combinations thereof.
//Replaces all those with (333) 444-5555
preg_replace(‘\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})’, ‘(\1) \2-\3’, $text);

//Phone Number (North America)
//Matches 3334445555, 333.444.5555, 333-444-5555, 333 444 5555, (333) 444 5555 and all combinations thereof.
‘\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}’

 

Postal codes
//Postal code (Canada)
‘\b[ABCEGHJKLMNPRSTVXY][0-9][A-Z] [0-9][A-Z][0-9]\b’

//Postal code (UK)
‘\b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\b’

 

Programming
//Programming: # comment
//Single-line comment started by # anywhere on the line
‘#.*$’

//Programming: # preprocessor statement
//Started by # at the start of the line, possibly preceded by some whitespace.
‘^\s*#.*$’

//Programming: /* comment */
//Does not match nested comments.  Most languages, including C, Java, C#, etc.
//do not allow comments to be nested.  I.e. the first */ closes the comment.
‘/\*.*?\*/’

//Programming: // comment
//Single-line comment started by // anywhere on the line
‘//.*$’

//Programming: GUID
//Microsoft-style GUID, numbers only.
‘[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}’

//Programming: GUID
//Microsoft-style GUID, with optional parentheses or braces.
//(Long version, if your regex flavor doesn’t support conditionals.)
‘[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}|\([A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\)|\{[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}’

//Programming: GUID
//Microsoft-style GUID, with optional parentheses or braces.
//Short version, illustrating the use of regex conditionals.  Not all regex flavors support conditionals.
//Also, when applied to large chunks of data, the regex using conditionals will likely be slower
//than the long version.  Straight alternation is much easier to optimize for a regex engine.
‘(?:(\()|(\{))?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}(?(1)\))(?(2)\})’

//Programming: Remove escapes
//Remove backslashes used to escape other characters
preg_replace(‘\\(.)’, ‘\1’, $text);

//Programming: String
//Quotes may appear in the string when escaped with a backslash.
//The string may span multiple lines.
‘"[^"\\]*(?:\\.[^"\\]*)*"’

//Programming: String
//Quotes may appear in the string when escaped with a backslash.
//The string cannot span multiple lines.
‘"[^"\\\r\n]*(?:\\.[^"\\\r\n]*)*"’

//Programming: String
//Quotes may not appear in the string.  The string cannot span multiple lines.
‘"[^"\r\n]*"’

 

Quotes
//Quotes: Replace smart double quotes with straight double quotes.
//ANSI version for use with 8-bit regex engines and the Windows code page 1252.
preg_replace(‘[\x84\x93\x94]’, ‘"’, $text);

//Quotes: Replace smart double quotes with straight double quotes.
//Unicode version for use with Unicode regex engines.
preg_replace(‘[\u201C\u201D\u201E\u201F\u2033\u2036]’, ‘"’, $text);

//Quotes: Replace smart single quotes and apostrophes with straight single quotes.
//Unicode version for use with Unicode regex engines.
preg_replace("[\u2018\u2019\u201A\u201B\u2032\u2035]", "’", $text);

//Quotes: Replace smart single quotes and apostrophes with straight single quotes.
//ANSI version for use with 8-bit regex engines and the Windows code page 1252.
preg_replace("[\x82\x91\x92]", "’", $text);

//Quotes: Replace straight apostrophes with smart apostrophes
preg_replace("\b’\b", "?", $text);

//Quotes: Replace straight double quotes with smart double quotes.
//ANSI version for use with 8-bit regex engines and the Windows code page 1252.
preg_replace(‘\B"\b([^"\x84\x93\x94\r\n]+)\b"\B’, ‘?\1?’, $text);

//Quotes: Replace straight double quotes with smart double quotes.
//Unicode version for use with Unicode regex engines.
preg_replace(‘\B"\b([^"\u201C\u201D\u201E\u201F\u2033\u2036\r\n]+)\b"\B’, ‘?\1?’, $text);

//Quotes: Replace straight single quotes with smart single quotes.
//Unicode version for use with Unicode regex engines.
preg_replace("\B’\b([^’\u2018\u2019\u201A\u201B\u2032\u2035\r\n]+)\b’\B", "?\1?", $text);

//Quotes: Replace straight single quotes with smart single quotes.
//ANSI version for use with 8-bit regex engines and the Windows code page 1252.
preg_replace("\B’\b([^’\x82\x91\x92\r\n]+)\b’\B", "?\1?", $text);

 

Escape
//Regex: Escape metacharacters
//Place a backslash in front of the regular expression metacharacters
preg_replace("[][{}()*+?.\\^$|]", "\\$0", $text);

 

Security
//Security: ASCII code characters excl. tab and CRLF
//Matches any single non-printable code character that may cause trouble in certain situations.
//Excludes tabs and line breaks.
‘[\x00\x08\x0B\x0C\x0E-\x1F]’

//Security: ASCII code characters incl. tab and CRLF
//Matches any single non-printable code character that may cause trouble in certain situations.
//Includes tabs and line breaks.
‘[\x00-\x1F]’

//Security: Escape quotes and backslashes
//E.g. escape user input before inserting it into a SQL statement
preg_replace("\\$0", "\\$0", $text);

//Security: Unicode code and unassigned characters excl. tab and CRLF
//Matches any single non-printable code character that may cause trouble in certain situations.
//Also matches any Unicode code point that is unused in the current Unicode standard,
//and thus should not occur in text as it cannot be displayed.
//Excludes tabs and line breaks.
‘[^\P{C}\t\r\n]’

//Security: Unicode code and unassigned characters incl. tab and CRLF
//Matches any single non-printable code character that may cause trouble in certain situations.
//Also matches any Unicode code point that is unused in the current Unicode standard,
//and thus should not occur in text as it cannot be displayed.
//Includes tabs and line breaks.
‘\p{C}’

//Security: Unicode code characters excl. tab and CRLF
//Matches any single non-printable code character that may cause trouble in certain situations.
//Excludes tabs and line breaks.
‘[^\P{Cc}\t\r\n]’

//Security: Unicode code characters incl. tab and CRLF
//Matches any single non-printable code character that may cause trouble in certain situations.
//Includes tabs and line breaks.
‘\p{Cc}’

 

SSN (Social security numbers)
//Social security number (US)
‘\b[0-9]{3}-[0-9]{2}-[0-9]{4}\b’

 

Trim
//Trim whitespace (including line breaks) at the end of the string
preg_replace("\s+\z", "", $text);

//Trim whitespace (including line breaks) at the start and the end of the string
preg_replace("\A\s+|\s+\z", "", $text);

//Trim whitespace (including line breaks) at the start of the string
preg_replace("\A\s+", "", $text);

//Trim whitespace at the end of each line
preg_replace("[ \t]+$", "", $text);

//Trim whitespace at the start and the end of each line
preg_replace("^[ \t]+|[ \t]+$", "", $text);

//Trim whitespace at the start of each line
preg_replace("^[ \t]+", "", $text);

 

URL’s
//URL: Different URL parts
//Protocol, domain name, page and CGI parameters are captured into backreferenes 1 through 4
‘\b((?#protocol)https?|ftp)://((?#domain)[-A-Z0-9.]+)((?#file)/[-A-Z0-9+&@#/%=~_|!:,.;]*)?((?#parameters)\?[-A-Z0-9+&@#/%=~_|!:,.;]*)?’

//URL: Different URL parts
//Protocol, domain name, page and CGI parameters are captured into named capturing groups.
//Works as it is with .NET, and after conversion by RegexBuddy on the Use page with Python, PHP/preg and PCRE.
‘\b(?https?|ftp)://(?[-A-Z0-9.]+)(?/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(?\?[-A-Z0-9+&@#/%=~_|!:,.;]*)?’

//URL: Find in full text
//The final character class makes sure that if an URL is part of some text, punctuation such as a
//comma or full stop after the URL is not interpreted as part of the URL.
‘\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]’

//URL: Replace URLs with HTML links
preg_replace(‘\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]’, ”, $text);

 

Words
//Words: Any word NOT matching a particular regex
//This regex will match all words that cannot be matched by %REGEX%.
//Explanation: Observe that the negative lookahead and the \w+ are repeated together.
//This makes sure we test that %REGEX% fails at EVERY position in the word, and not just at any particular position.
‘\b(?:(?!%REGEX%)\w)+\b’

//Words: Delete repeated words
//Find any word that occurs twice or more in a row.
//Delete all occurrences except the first.
preg_replace(‘\b(\w+)(?:\s+\1\b)+’, ‘\1’, $text);

//Words: Near, any order
//Matches word1 and word2, or vice versa, separated by at least 1 and at most 3 words
‘\b(?:word1(?:\W+\w+){1,3}\W+word2|word2(?:\W+\w+){1,3}\W+word1)\b’

//Words: Near, list
//Matches any pair of words out of the list word1, word2, word3, separated by at least 1 and at most 6 words
‘\b(word1|word2|word3)(?:\W+\w+){1,6}\W+(word1|word2|word3)\b’

//Words: Near, ordered
//Matches word1 and word2, in that order, separated by at least 1 and at most 3 words
‘\bword1(?:\W+\w+){1,3}\W+word2\b’

//Words: Repeated words
//Find any word that occurs twice or more in a row.
‘\b(\w+)\s+\1\b’

//Words: Whole word
‘\b%WORD%\b’

//Words: Whole word
//Match one of the words from the list
‘\b(?:word1|word2|word3)\b’

//Words: Whole word at the end of a line
//Whitespace permitted after the word
‘\b%WORD%\s*$’

//Words: Whole word at the end of a line
‘\b%WORD%$’

//Words: Whole word at the start of a line
‘^%WORD%\b’

//Words: Whole word at the start of a line
//Whitespace permitted before the word
‘^\s*%WORD%\b’


Problem :

You need to validate that user input or data read from a file has the expected structure and content.
For example, you want to ensure that a user enters a valid IP address, telephone number, or e-mail
address.

Solution :

Use regular expressions to ensure that the input data follows the correct structure and contains only
valid characters for the expected type of information.

How It Works :

When a user inputs data to your application or your application reads data from a file, it’s good
practice to assume that the data is bad until you have verified its accuracy. One common validation
requirement is to ensure that data entries such as e-mail addresses, telephone numbers, and credit
card numbers follow the pattern and content constraints expected of such data. Obviously, you cannot
be sure the actual data entered is valid until you use it, and you cannot compare it against values that are known to be correct. However, ensuring the data has the correct structure and content is
a good first step to determining whether the input is accurate. Regular expressions provide an excellent
mechanism for evaluating strings for the presence of patterns, and you can use this to your
advantage when validating input data.
The first thing you must do is figure out the regular expression syntax that will correctly match
the structure and content of data you are trying to validate. This is by far the most difficult aspect of
using regular expressions. Many resources exist to help you with regular expressions, such as
The Regulator (http://regex.osherove.com/) and RegExDesigner.NET by Chris Sells http://www.sellsbrothers.com/tools/#regexd). The RegExLib.com web site (http://www.regxlib.com/) also provides hundreds of useful prebuilt expressions.
Regular expressions are constructed from two types of elements: literals and metacharacters.
Literals represent specific characters that appear in the pattern you want to match. Metacharacters
provide support for wildcard matching, ranges, grouping, repetition, conditionals, and other control
mechanisms. Table 2-2 describes some of the more commonly used regular expression metacharacter
elements. (Consult the .NET SDK documentation for a full description of regular expressions.)

 

Input Type

Description

Regular Expression

Numeric input

The input consists of one or more decimal digits; for example,
5 or 5683874674.

^\d+$

Personal identification number (PIN)

The input consists of four decimal

^\d{4}$

Credit card number

The input consists of data that matches the pattern of most major
credit card numbers; for example,
4921835221552042 or
4921-8352-2155-2042.

^\d{4}-?\d{4}-?\d{4}-?\d{4}$

Simple password

The input consists of six to eight characters; for example, ghtd6f
or b8c7hogh.

 

 

 

^\w{6,8}$

E-mail address

The input consists of an Internet expression
indicates that each address element
must consist of one or more word
characters or hyphens; for example,
somebody@company.com.

 

 

^[\w-]+@([\w-]+\.)+[\w-]+$

HTTP or HTTPS URL

The input consists of an HTTP-based or HTTPS-based URL; for example, www.hotmail.com

^https?://([\w-]+\.)+[\w-]+(/[\w-./?%=]*)?$

The Code :
The ValidateInput method shown in the following example tests any input string to see if it
matches a specified regular expression.

using System;
using System.Text.RegularExpressions;

namespace mahmoud_alam
{
    class new292
    {
        public static bool ValidateInput(string regex, string input)
        {
            // Create a new Regex based on the specified regular expression.
            Regex r = new Regex(regex);
            // Test if the specified input matches the regular expression.
            return r.IsMatch(input);
        }
        public static void Main(string[] args)
        {
            // Test the input from the command line. The first argument is the
            // regular expression, and the second is the input.
            Console.WriteLine("Regular Expression: {0}", args[0]);
            Console.WriteLine("Input: {0}", args[1]);
            Console.WriteLine("Valid = {0}", ValidateInput(args[0], args[1]));
            // Wait to continue.
            Console.WriteLine("\nMain method complete. Press Enter");
            Console.ReadLine();
        }
    }
}

Tag Cloud