未經測試的代碼如下,如果它炸燬你的電腦就不要怪我:
var parseDn(str)
var m = /^cn=(.*?),ou=(.*?),o=(.*?),o=swift$/.exec(str);
if (!m) { return null; } // (a) and (b).
if (s.length > 100) { return null; } // (c).
if (/\s/.exec(s)) { return null; } // (d).
var x = {cn:m[1], ou:m[2], o:m[3]};
var isValidName = function(s) { return (/^[a-z-]{2,20}$/).exec(s); }
if (!isValidName(x.cn) || !isValidName(x.ou) || !isValidName(x.o)) {
return null; // (f).
}
var countNumbers = function(s) { return s.replace(/\D/g, "").length; }
if (countNumbers(x.cn)>2 || countNumbers(x.ou)>2 || countNumbers(x.o)>2) {
return null; // (g).
}
return x; // => {"cn":"name", "ou":"name", "o":"bic8"}
}
注意,(e)和一些關於「段」的點是完全選中,因爲描述是含糊。但這應該讓你開始...
你應該考慮自己解析,而不是調用正則表達式。 – jAndy 2011-02-23 09:33:46
你能否改寫這個問題來說明你在編寫正則表達式時遇到什麼問題? – maerics 2011-02-23 09:36:51
如何驗證逗號分隔文本和正則表達式如何驗證最小長度和最大長度 – Aaaaa 2011-02-23 09:38:26