我们有一个需要维护的 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
我们如何将其添加到函数中以删除除字母、数字和表情符号之外的所有内容?
我宁愿捕获匹配而不是否定它们。
[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())