0

我尝试检查字符串是否是 CP1254 或 CP1250 等代码页的一部分:

//cp1250
public static const CP1250_REGEXP:RegExp = /[\u00A0\u00A4\u00A6-\u00A9\u00AB-\u00AE\u00B0\u00B1\u00B4-\u00B8\u00BB\u00C1\u00C2\u00C4\u00C7\u00C9\u00CB\u00CD\u00CE\u00D3\u00D4\u00D6\u00D7\u00DA\u00DC\u00DD\u00DF\u00E1\u00E2\u00E4\u00E7\u00E9\u00EB\u00ED\u00EE\u00F3\u00F4\u00F6\u00F7\u00FA\u00FC\u00FD\u0102-\u0107\u010C-\u0111\u0118-\u011B\u0139\u013A\u013D\u013E\u0141-\u0144\u0147\u0148\u0150\u0151\u0154\u0155\u0158-\u015B\u015E-\u0165\u016E-\u0171\u0179-\u017E\u02C7\u02D8\u02D9\u02DB\u02DD\u2013\u2014\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2026\u2030\u2039\u203A\u20AC\u2122]/;

//cp1254
public static const CP1254_REGEXP:RegExp = /[\u00A0-\u00CF\u00D1-\u00DC\u00DF-\u00EF\u00F1-\u00FC\u00FF\u011E\u011F\u0130\u0131\u0152\u0153\u015E-\u0161\u0178\u0192\u02C6\u02DC\u2013\u2014\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2026\u2030\u2039\u203A\u20AC\u2122]/;
var stringValue = "Lorem ipsum"

if( CP1250_REGEXP.exec( stringValue ) ) {
trace( "is cp1250" );
}

if( CP1254_REGEXP.exec( stringValue ) ) {
trace( "is cp1254" );
}

但是 exec() 仅在 stringValue 中的一个字符具有正则表达式模式的字符时才返回。如果 stringValue 的第一个字符相等,则 test() 返回。

简而言之:我的目标是检查所有 stringValue 字符是否等于 codePage 的模式/部分。

但我被困在这一点上。

4

1 回答 1

0
[\u00A0-\u00CF\u00D1-\u00DC\u00DF-\u00EF\u00F1-\u00FC\u00FF\u011E\u011F\u0130\u0131\u0152\u0153\u015E-\u0161\u0178\u0192\u02C6\u02DC\u2013\u2014\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2026\u2030\u2039\u203A\u20AC\u2122]

只匹配集合中的任何字符一次。向表达式添加 a*以识别任意数量的它们(包括 0,+代替 1 或更多),并消耗整个输入,以^(start of line) 开始并以$(end of line) 结束,例如:

^[chars]*$

或者,使用您的字符集:

^[\u00A0-\u00CF\u00D1-\u00DC\u00DF-\u00EF\u00F1-\u00FC\u00FF\u011E\u011F\u0130\u0131\u0152\u0153\u015E-\u0161\u0178\u0192\u02C6\u02DC\u2013\u2014\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2026\u2030\u2039\u203A\u20AC\u2122]*$
于 2013-01-18T22:14:26.150 回答