2010-07-08 326 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