2014-09-18 2 views
1

Я использую два регулярных выражения для соответствия тексту.Match Regular Expression German Languange

var RegExp = /[^\W\d](\w|[-'](?=\w))*/gi; 
var RegExpOthers = /[^\W\d]{4,}(\w|[-']{1,2}(?=\w))*/gi; 

В настоящее время нет слов, содержащих буквы, как ä, ü, ö ... (немецкого алфавита) не будет соответствовать.

Как продлить эти выражения?

+0

возможно дубликат [Regex для Умляута] (http://stackoverflow.com/questions/22017723/regex-for-umlaut), а также [Javascript + Unicode regexes] (http://stackoverflow.com/questions/280712/javascript-unicode-regexes) – apsillers

ответ

1

Это следует сделать это:

[^\x00-\x7F]+ 

Это соответствует любому символу, который не содержится в ASCII character set (0-127, то есть от 0x0 до 0x7F). Вы можете сделать то же самое с Unicode:

[^\u0000-\u007F]+ 
+0

Я пробовал это ... Если я использую выражение var RegExp =/[^ \ W \ d] + [^ \ x00- \ x7F] (? \ ш | [- '] (= \ ш)) */г; он возвращается для строки «der schöne baum ist schön» только «schön» и «schöne» – mm1975

+0

Вы можете добавить все возможные персонажи – AvrilAlejandro

+0

полный список [немецкий символ] (http://homepages.rootsweb.ancestry.com/~george /ansi_ascii_character_chart.html) – AvrilAlejandro

0

Это предмет Unicode символов.

Что происходит, так это то, что ä, ü, ö.. в вашем примере - это не одна буква, а 2, потому что тильда также считается символом. Это приводит к множеству сложностей и правил, которые необходимо соблюдать, чтобы соответствовать правилам Unicode.

Вы могли бы сделать что-то вроде: ([\x{0049}-\x{0130}]) встретить, например я с тильды, но это выражение может изменяться в зависимости, если вы собираетесь использовать это выражение на .net, Java, JavaScript или PHP.

Online Demo

Вы также можете проверить, какой код каждый символ представляет здесь:

http://www.fileformat.info/info/unicode/char/search.htm?q=%C4%B0&preview=entity