0

我有这个正则表达式:

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");
 }
}

当我输入12345TestChrome 时,正则表达式通过了,这就是重点。但在 IE 中,字符串不能以数字开头。在我看来,IE 只是为了让我的生活变得悲惨。我该如何解决这个问题?

4

2 回答 2

1

如果您想允许(我想)挪威字母表中的数字和字母,请使用 unicode 序列尝试此正则表达式

var RE_SSN = /^[a-zA-Z\u00C5\u00C6\u00D8\u00E5\u00E6\u00F8\!\-\?\""\. ]{3,999}$/; 

在哪里

\u00C5 > Å  
\u00C6 > Æ   
\u00D8 > Ø  
\u00E5 > å  
\u00E6 > æ  
\u00F8 > ø 

希望这可以帮助

于 2012-04-23T12:23:52.057 回答
1

你的问题是A-Åa-å被不​​同解释的结构。IE 认为不在T那个范围内。

这可能与字符集检测有关。脚本是否以 UTF-8 编码?它是否以 UTF-8 BOM 开头?如果没有,那么添加一个可能会有所帮助 - 至少通过使浏览器的行为相同。

Secondly, I am not sure what your intent is by writing A-Åa-å, but it seems an unusual thing to put into a regex.

I suggest you change the regex to break out the characters into more natural ranges, e.g. to A-Za-zÅå, or expanding the ranges altogether.

于 2012-04-23T12:24:20.300 回答