更新測試文本鏈接
我有一個資源文件內的正則表達式,它是通過這需要所有資源字符串並輸出與他們腳本@Action方法呈現:
@model IEnumerable<LocalizationModel>
; (function (window) {
var l = {
@foreach(LocalizationModel file in Model)
{
@:@file.Title: {
foreach(var entry in file.Items)
{
@:@entry.Key: @Html.Raw(@HttpUtility.JavaScriptStringEncode(entry.Value.ToString(), true)),
}
@:},
}
};
// expose the l object to the global namespace.
window._l = l;
})(window);
這種部分被依次精縮:
[HttpGet]
public ContentResult Localization()
{
CultureInfo culture = CultureInfo.InvariantCulture; // easily replaceable by user culture.
IEnumerable<LocalizationModel> model = GetLocalizationModel(culture);
const string viewPath = "Localization";
string view = RenderPartialToString(viewPath, model);
string minified = JavaScriptCompressor.Compress(view, false);
return new ContentResult
{
Content = minified,
ContentEncoding = Encoding.UTF8,
ContentType = Constants.JavaScriptContentType
};
}
這產生一個類似的結果(美化):
(function (b) {
var a = {
Common: {
Errors: "Errores",
SingleError: "Error",
},
Regex: {
WebLink: '(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()\u003c\u003e]+|\\(([^\\s()\u003c\u003e]+|(\\([^\\s()\u003c\u003e]+\\)))*\\))+(?:\\(([^\\s()\u003c\u003e]+|(\\([^\\s()\u003c\u003e]+\\)))*\\)|[^\\s`!()\\[\\]{};:\u0027".,\u003c\u003e?«»「」‘’]))',
Link: '(?i)\\b((?:[a-z][\\w-]+:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()\u003c\u003e]+|\\(([^\\s()\u003c\u003e]+|(\\([^\\s()\u003c\u003e]+\\)))*\\))+(?:\\(([^\\s()\u003c\u003e]+|(\\([^\\s()\u003c\u003e]+\\)))*\\)|[^\\s`!()\\[\\]{};:\u0027".,\u003c\u003e?«»「」‘’]))',
},
};
b._l = a })(window);
然後,冥冥中,我做的:
var pattern = new RegExp(_l.Regex.WebLink);
console.log(pattern.test(input.val()));
但在創建正則表達式時,我得到一個 「無效的量詞」 的錯誤。
出了什麼問題?
我現在在想這個unicode字符可能是突破性差異嗎?
這裏有一個線索...'/_l.Regex.Link/.test("_l。 Regex.Link「)// true' – 2012-02-19 19:14:42