javascript在alert之前转义单引号

对于1个单引号,则转义该单引号

对于1个反斜杠跟1个单引号,则不管它。

对于2个及以上的反斜杠加一个单引号,则分别对每个反斜杠和单引号都进行转义,即 使反斜杠数目保持不变, 并转义单引号。

 

ContractedBlock.gif ExpandedBlockStart.gif Code
/// <summary>
    
/// 对于单引号而言,若前面有偶数个反斜杠则异常,奇数个反斜杠则正常
    
/// </summary>
    
/// <param name="input"></param>
    
/// <returns></returns>
    private string ReplaceQuote(string input)
    {
        
string pattern = @"(?:\\)*(?=['])";
        
return Regex.Replace(input, pattern, new MatchEvaluator(ReplaceText));
    }

    
// 匹配项
    public string ReplaceText(Match m)
    {
        
string str = m.Value;
        
if (str.Length == 0)
        {
            
// 只有单引号,则转义该单引号
            return str + @"\";
        }
        
else if(str.Length == 1)
        {
            
// 1个反斜杠加一个单引号,则不替换
            return string.Empty;
        }
        
// 对于大于2个长度的反斜杠,则返回原来的2倍
        
// 即 使把每个反斜杠都转义了。
        return new string('\\'2 * str.Length);
    }

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
protected void Page_Load(object sender, EventArgs e)
    {
        
        
// 测试代码
        string strText = @"'a\'b\\'c\\\'d\\\\'";
        System.Diagnostics.Stopwatch swt 
= new System.Diagnostics.Stopwatch();
        swt.Start();
        strText 
= ReplaceQuote(strText);
        swt.Stop();
        Response.Write(
"替换使用了毫秒数:" + swt.ElapsedMilliseconds.ToString());
        
string strAlert = string.Format("alert('{0}')", strText);
        ClientScript.RegisterStartupScript(
this.GetType(), "alert", strAlert, true);
    }

转载于:https://www.cnblogs.com/joe-yang/archive/2008/11/19/1337019.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值