2009-11-12 707 views
17

我需要一個正則表達式,它只允許輸入中的A-Z,a-z,0-9,_字符和點(。)。我試過:正則表達式匹配A-Z,A-Z,0-9,_和

[A-Za-z0-9_.] 

但它沒有奏效。我該如何解決它?

+2

可以用這一個,它的有點含糊更多的信息做。一些示例輸入會很好,您使用的上下文也是語言嗎? – 2009-11-12 11:38:08

回答

40
^[A-Za-z0-9_.]+$ 

從字符串的開始到結束,匹配一個或多個這些字符。

編輯:

注意^$比賽開始和結束。啓用多行時,這可能意味着一行匹配,但不是完整的字符串。

使用\A作爲字符串的開始,\z作爲結束。

見例如:http://msdn.microsoft.com/en-us/library/h5181w5w(v=vs.110).aspx

+3

也可以是'^ [\ w。] + $',認爲這在任何地方都行不通。 – Kobi 2009-11-12 11:41:53

+0

@Kobi:它幾乎可以在任何地方工作,只是不同:) – SilentGhost 2009-11-12 11:43:59

5

從你給什麼工作我會假設你想查詢某人沒有進入比你列出的其他任何文字。對於工作,你要搜索的上市比其他任何字符:

[^A-Za-z0-9_.] 

和使用,在比賽中你的代碼,類似:

if (/[^A-Za-z0-9_.]/.match(your_input_string)) { 
    alert("you have entered invalid data"); 
} 

怎麼樣了呢?

0

也許,您需要更確切地指定哪些方法無效以及您處於什麼環境。

至於聲稱該點在charackter類中是特殊的,在每個編程環境中都不是這樣。例如,下面的Perl腳本

use warnings; 
use strict; 

my $str = '!!!.###'; 
$str =~ s/[A-Za-z_.]/X/g; 
print "$str\n"; 

產生

!!!X###