ASP经典正则表达式只允许英文字母和表情符号

问题描述 投票:0回答:1

我们有一个需要维护的 ASP Classic 网站。我们目前正在过滤用户输入,仅允许字母和数字,如下所示:

Function cleantext(toclean)
    Dim regEx
    Set regEx = New RegExp
    regEx.Global = True
    regEx.Pattern = "[^0-9a-zA-Z]"
    cleantext=regEx.Replace(toclean&"", "") 
End Function

我们现在需要更改此功能以允许表情符号。我发现以下正则表达式来检测表情符号:

/(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/g

我们如何将其添加到函数中以删除除字母、数字和表情符号之外的所有内容?

regex vbscript asp-classic emoji
1个回答
0
投票

我宁愿捕获匹配而不是否定它们。

[a-zA-Z0-9]|(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])

演示

在这里,我匹配所有所需的字符串,并在 StringBuilder 中将它们连接起来。您可以在此处使用 Stringbuilder 作为 cleanText。

源代码运行):

Dim regex As Regex = New Regex("[a-zA-Z0-9]|(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])")
        Dim matches As MatchCollection = regex.Matches("Hello World 1 2 3 4 5 😀😀©🔀  !@#$@#%$#$^#$®^$$ sdfdsa;fjl nas;lkf asdfklasd;f asdf as;dlfjads ;lfkj ;lkjasd f;ladsjf ;lkj;l sadf ;lkasdfl akdsf")
        Dim cleanText as new System.Text.StringBuilder()
        For Each m As Match In matches
            For Each c As Capture In m.Captures
                cleanText.Append(c.Value)
            Next
        Next
       Console.WriteLine(cleanText.ToString())
© www.soinside.com 2019 - 2024. All rights reserved.