不是很复杂,多提供些输入输出样例,好确定翻译后运算是正确的。大概是这样:Math.DivRem(a, b, out j) ->> j = a % b;
constStr.Substring() ->> constStr.substr()
aChar = ctnNo[0]; ->> ctnNo.charAt(0)
Convert.ToInt32() ->> parseInt()
constStr.Substring() ->> constStr.substr()
aChar = ctnNo[0]; ->> ctnNo.charAt(0)
Convert.ToInt32() ->> parseInt()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
function CheckCtnNo(ctnNo)
{
var aChar;
var constStr;
var b0, b1, b2, b3;
var r0, r1, r2;
var j;
var cntNo;
cntNo = ctnNo.Trim();
if (ctnNo.length !=11)
{
return false;
} aChar = ctnNo.charAt(0);
if (aChar < 'A' || aChar > 'Z')
{
return false;
}
constStr = "10010203040506070809";
j=(aChar.charCodeAt(0)-'A'.charCodeAt(0))%10;
b0 = constStr.substring(2 * j, 2);
aChar = ctnNo.charAt(1);
if (aChar < 'A' || aChar > 'Z')
{
return false;
}
constStr = "09020406081001030507";
j=(aChar.charCodeAt(0)-'A'.charCodeAt(0))%10;
b1 = constStr.substring(2 * j, 2);
aChar = ctnNo.charAt(2);
if (aChar < 'A' || aChar > 'Z')
{
return false;
}
constStr = "07040801050902061003";
j=(aChar.charCodeAt(0)-'A'.charCodeAt(0))%10;
b2 = constStr.substring(2 * j, 2);
aChar = ctnNo.charAt(3);
if (aChar < 'A' || aChar > 'Z')
{
return false;
}
constStr = "03080502100704010906";
j=(aChar.charCodeAt(0)-'A'.charCodeAt(0))%10
b3 = constStr.substring(2 * j, 2);
r0=(parseInt(b0)+parseInt(b1)+parseInt(b2)+parseInt(b3))%11;
for (var i = 5; i <= 11; i++)
{
if (ctnNo.substring(i - 1, 1).charAt(0) < '0' || ctnNo.substring(i - 1, 1).charAt(0) > '9')
{
return false;
}
}
r1=(5*parseInt(ctnNo.substring(4, 1))+10*parseInt(ctnNo.substring(5, 1))+9*parseInt(ctnNo.substring(6, 1))+7*parseInt(ctnNo.substring(7, 1))+3*parseInt(ctnNo.substring(8, 1))+6*parseInt(ctnNo.substring(9, 1)))%11;
r2=(r0 + r1)%11;
if (r2==10)
{
r2 = 0;
}
if (ctnNo.substring(10, 1)==r2)
{
return true;
}
return false; } function CheckSealNum(sealNum)
{
for (var i = 0; i < sealNum.Trim().Length; i++)
{
if ((sealNum.charAt(i) < 'A' || sealNum.charAt(i) > 'Z') && (sealNum.charAt(i) < 'a' || sealNum.charAt(i) > 'z') && sealNum.charAt(i) != " " && !(sealNum.charAt(i) >= '0' && sealNum.charAt(i) <= '9'))
{
return false;
}
}
return true;
}
没怎么测,楼主自己测试一下吧。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script language="javascript">
function ValidateCntNo(){
this.CheckCtnNo = function(ctnNo){
var s = ctnNo.replace(/^\s+|\s+$/g, '');
if (!/[A-Z]{4}\d{7}/.test(s)) {
return false;
}
var rule = ["10010203040506070809", "09020406081001030507", "07040801050902061003", "03080502100704010906", 4, 10, 9, 7, 3, 6];
var r0 = 0;
var r1 = 0;
var r2 = 0;
for (var i = 0; i < 4; i++) {
r0 += 1 * rule[i].substr((s.charCodeAt(i) - 65) % 10 * 2, 2);
}
for (var i = 4; i < 10; i++) {
r1 += rule[i] * s.charAt(i);
}
r1 %= 11;
r2 = (r0 + r1) % 11;
if (r2 == 10) {
r2 = 0;
}
alert(r2);
return (r2 == s.charAt(i))
}
this.CheckSealNum = function(sealNum){
return (!/[^a-zA-Z0-9 ]/.test(sealNum));
}
}
</script> <script language="javascript">
var f = new ValidateCntNo();
var str; str = "ab#cd1098 ade";
alert(f.CheckSealNum(str));
str = " ABCD1234569 ";
alert(f.CheckCtnNo(str));
</script>
</head>
<body>
</body>
</html>