4

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

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

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

pattern.test('Zlatan Omerović');

它返回false并且未通过我的验证。

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

š đ č ć ž

并大写:

Š Đ Č Ć Ž

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

4

3 回答 3

8

当然,您可以将这些字符添加到您匹配的字符列表中。此外,由于您正在进行不区分大小写的匹配(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/

于 2013-04-12T22:07:58.270 回答
2

a-zA-Z就是这个意思,并且以英语为中心的方式:abcdefghijklmnopqrstuvwxyz. 遗憾的是,使用 JavaScript 的正则表达式,如果您想测试其他字母字符,您必须专门指定它们。JavaScript 没有对语言环境敏感的“alpha”定义。要包含非英文字母字符,您必须故意包含它们。您可以直接执行此操作(例如,通过包含š在正则表达式中),也可以使用 Unicode 转义序列(例如\u0161)。如果所讨论的其他波斯尼亚字母字符具有连续的范围,您也可以对它们使用该符号,但它必须与用英文术语定义的-分开。a-z

于 2013-04-12T22:09:04.887 回答
1

为了在测试结果中包含你的五个中的第一个(基于 S)符号,我做了:

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

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

于 2013-04-12T22:15:47.023 回答