2010-07-08 4 views
44

Какое регулярное выражение соответствует xxx[any ascii char here, spaces included]+xxx?
Я пытаюсь xxx[(\w)(\W)(\s)]+xxx, но он не работает.Regex any ascii character

ответ

55

Если вы на самом деле означает любые и ASCII (не, например, все символы Юникода):

xxx[\x00-\x7F]+xxx 

JavaScript Пример:

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

re.test('xxxabcxxx') 
// true 

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

это, кажется, не работает так, как я думал, что это будет , Это соответствует представлениям BYTE символов ascii, а не визуальным печатным/типизированным символам? – anon58192932

+0

@advocate, да. На каком языке вы тестировали? Это может быть так. –

+0

oh Я надеялся найти что-то, чтобы соответствовать печатным версиям символов ASCII :) – anon58192932

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

+0

@catwalk Ты мой герой на сегодня! По какой-то причине он не принимал \ x00- \ x7F, но потребовалось [: ascii:]. Благодаря! – n0nag0n

+4

Обратите внимание, что [[: ascii:]] будет соответствовать любому символу ASCII, даже непечатаемым символам, тогда как [- ~] будет соответствовать только пригодному для печати подмножеству ASCII. – elolos

40
[ -~] 

seen here Он соответствует всем символам ASCII из пространства тильды

Так ваша реализация будет:

xxx[ -~]+xxx 
+0

Это прекрасно, так как принятый ответ не работал с атрибутом [RegularExpression] в ASP.NET MVC - он отображается как символы Unicode, и это нарушает проверку. – Art

+2

Действительно элегантное решение, очень читаемое и семантически именно то, что я искал. –

+0

@Art Это не работает для меня с атрибутом '[RegularExpression]'. Вам нужно было сделать что-нибудь еще для его работы? Мой атрибут - это просто '', Но даже не принимает «asdf». – Zack