如何在RegEx中查看波斯尼亚语特有的字符?

时间:2013-04-12 22:05:36

标签: javascript regex special-characters

我有这个正则表达式模式,这非常简单,它验证提供的字符串是否为“alpha”(大写和小写):

var pattern = /^[a-zA-Z]+$/gi;

当我触发pattern.test('Zlatan Omerovic')时,它会返回true,但是如果我:

pattern.test('Zlatan Omerović');

它返回false,但我的验证失败。

在波斯尼亚语中,我们有这些特定的字符:

š đ č ć ž

大写:

Š Đ Č Ć Ž

是否可以使用JavaScript正则表达式验证这些字符(两种情况)?

3 个答案:

答案 0 :(得分:5)

当然,您可以将这些字符添加到您匹配的字符列表中。此外,由于您正在进行不区分大小写的匹配(i标志),因此您不需要大写字符。

var pattern = /^[a-zšđčćž ]+$/gi;

在这里小提琴:http://jsfiddle.net/ryanbrill/KB74b/

这是一个替代模式,它使用unicode表示,这可能更好(例如,如果文件没有使用正确的编码保存,则嵌入字符将不起作用)

var pattern = /^[a-z\u0161\u0111\u010D\u0107\u017E ]+$/gi;

http://jsfiddle.net/ryanbrill/KB74b/2/

答案 1 :(得分:2)

a-zA-Z就是这样,并以英语为中心:abcdefghijklmnopqrstuvwxyz。遗憾的是,使用JavaScript的正则表达式,如果要测试其他字母字符,则必须专门指定它们。 JavaScript没有对区域设置敏感的&#34; alpha&#34;定义。要包含非英语字母字符,您必须故意包含它们。您可以按字面意思(例如,在正则表达式中包含š)或使用Unicode转义序列(例如\u0161)。如果有问题的其他波斯尼亚字母字符具有连续范围,您也可以使用-表示法,但它必须与a-z分开,后者以英语术语定义。< / p>

答案 2 :(得分:1)

要在测试结果中包含我所做的五个符号的第一个(基于S的)符号:

var pattern = /^[a-zA-Z\u0160-\u0161]+$/g;

尝试以这种方式添加所需的所有符号;)