不同的正则表达式
问题描述:
我有这样的正则表达式:不同的正则表达式
var RE_SSN = /^[A-Åa-å0-9,\!\-\?\""\. ]{3,999}$/;
这是我在一个JS-功能
function checkSsn(ssn){
if (RE_SSN.test(ssn)) {
javascript:addAppointment(document.forms[0])
alert("YES");
} else {
alert("NO");
}
}
使用当我在Chrome中的正则表达式通过键入12345Test
,和多数民众赞成在点。但在IE中,字符串不能以数字开头。在我看来,IE只是为了让我的生活苦不堪言。如何解决这个问题?
答
你的问题是建设A-Åa-å
这是不同的解释。 IE不认为T
在这个范围内。
这可能与字符集检测有关。脚本是以UTF-8编码的吗?它是否以UTF-8 BOM开始?如果没有,那么添加一个可能会有所帮助 - 至少通过使浏览器表现相同。
其次,我不确定你的意图是通过编写A-Åa-å
,但它似乎是一个不寻常的事情,把一个正则表达式。
我建议你改变正则表达式以将字符分解为更自然的范围,例如,到A-Za-zÅå
,或者完全扩展范围。
答
norwegian alphabet尝试这个正则表达式中使用Unicode序列
var RE_SSN = /^[a-zA-Z\u00C5\u00C6\u00D8\u00E5\u00E6\u00F8\!\-\?\""\. ]{3,999}$/;
其中
\u00C5 > Å
\u00C6 > Æ
\u00D8 > Ø
\u00E5 > å
\u00E6 > æ
\u00F8 > ø
希望这有助于
我不能说为什么IE在开始时不允许数字,但只是一个评论:[A-Åa-å]与[A-å]完全相同,因为[A-Å]与A 0x41)至Å(0xC5),[a-å]与A(0x61)至å(0xE5)匹配。你可能是指[A-Za-zÆØÅæøå0-9,\!\ - \?\“\。],否则,你会错过小写字母æ和ø。(我假设你是挪威语)。 – 2012-04-23 12:19:41
另外,为什么有双双引号? – 2012-04-23 12:20:13
双双引号,坦白说我不知道。无论如何感谢评论:) – 2012-04-23 12:21:33