2010-07-08 323 views
44

xxx[any ascii char here, spaces included]+xxx匹配的正則表達式是什麼?
我正在嘗試xxx[(\w)(\W)(\s)]+xxx,但它似乎不起作用。正則表達式任意ASCII字符

回答

55

如果你真的是任何和ASCII(例如不所有Unicode字符):

xxx[\x00-\x7F]+xxx 

JavaScript示例:

var re = /xxx[\x00-\x7F]+xxx/; 

re.test('xxxabcxxx') 
// true 

re.test('xxx☃☃☃xxx') 
// false 
+0

這似乎並沒有工作,我以爲它會的方式。這匹配ascii字符的BYTE表示,而不是可視化的打印/鍵入字符本身? – anon58192932 2013-02-27 20:49:42

+0

@advocate,是的。你測試過哪種語言?這可能是。 – 2013-02-28 06:09:58

+0

哦,我希望能找到與ASCII字符的打印版本相匹配的東西:) – anon58192932 2013-02-28 09:36:05

4

嘗試使用的.+代替[(\w)(\W)(\s)]+

請注意,這實際上包含超過您的需要 - ASCII僅定義了前128個字符。

0

.代表任意字符,所以你寫你的正則表達式是這樣的:

xxx.+xxx 
0

取決於你的意思 「ASCII字符」 你可以簡單地嘗試

xxx.+xxx 
7

由於US-ASCII字符位於0x00-0x7F(0-127)的字節範圍內:

xxx[\x00-\x7F]+xxx 
23

您可以使用[[:ascii:]]

+2

。 。如果實施了 – mykhal 2010-07-08 12:20:46

+0

@catwalk你是我今天的英雄!由於某種原因,它不接受\ x00- \ x7F,但它使用了[:ascii:]。謝謝! – n0nag0n 2012-07-20 22:31:07

+4

請注意,[[:ascii:]]將匹配任何ASCII字符,甚至不可打印的字符,而[ - 〜]只匹配ASCII的可打印子集。 – elolos 2014-09-02 11:58:31

40
[ -~] 

seen here它所有的ASCII字符匹配從空間到波浪

所以,你的實現是:

xxx[ -~]+xxx 
+0

這是完美的,因爲接受的答案在ASP.NET MVC中的[RegularExpression]屬性中不起作用 - 它會以Unicode字符的形式呈現,這會打破驗證。 – Art 2015-12-08 03:36:29

+2

真正優雅的解決方案,具有高度可讀性和語義準確性,正是我所尋找的。 – 2016-04-28 13:49:43

+0

@藝術對於我來說''RegularExpression]'屬性不適合我......你還需要做其他特別的工作嗎?我的屬性只是''但是甚至不會接受「asdf」。 – Zack 2016-08-26 18:44:33