javascript

时间:2015-12-23 06:09:49

标签: javascript c# asp.net regex backbone.js

在解决aspx中的问题时,我在从ASP.Net会话变量设置骨干属性时遇到困难。

我想设置一个包含' \ u'的值的属性在两者之间的性格。喜欢

  App.prop.set("Username",<%= Session.Name %>)

Session.Name包含&#34; john \ udenver&#34;作为值,当我在javascript中调试调试器并检查它已经正确转义的值为&#34; john \ udenver&#34;

所以Session.Name已经有&#34; john \ udenver&#34;的转义值。

但是当它呈现并尝试将值赋给属性时,它是无意义的\ u并且我得到一个异常说&#34;错误:预期的十六进制数字。&#34;

我试图逃避使用&#34;逃避&#34;方法

App.prop.set("Username", escape ("<%= Session.Name %>")) 

但它抛出相同的异常,它呈现为

App.prop.set("Username", escape ("john\udenver")) 

我认为在渲染页面时,它会变为&#34; john \ udenver&#34;并抛出异常。

其中一个解决方法是在&lt;%= Session.Name%&gt;之前进行RegEx检查。

App.Prop.set("Username","<%= System.Text.RegularExpressions.Regex.Escape(Session.Name)%>");

但这似乎并不是最干净的方式。 需要帮助在字符串中设置和获取此属性,并在字符串中显示\ u或\ x。你能建议吗。

感谢。

1 个答案:

答案 0 :(得分:1)

首先在Unicode转义序列之外使用\x,或者在规范中不允许在十六进制转义之外使用"john\udenver",并导致某些引擎抛出语法错误。因此\u是JS中的非法字符串,因为很明显引擎在UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigitIn 之后查找unicode字符,并且失败将导致语法错误。

Session.Name

所以代替HexDigit,它找到了丹佛。

因此,如果"john\udenver"值已经App.prop.set("Username",<%= Session.Name.replace(/\\(?=[ux])/g, "\\\\") %>) ,请务必使用另一个类似

的反斜杠
select *
from (
    select lag(date_)over ( order by date_) as date_before_ko,
           date_ as date_after_ko,
           floor((date_ - lag(date_) over ( order by date_))*24*60) as minutes_passed  
    from HISTORY_LOG
)
where minutes_passed > 4