ios - 在允许所有语言的同时快速检查字符串是否包含任何特殊字符
问题描述
我看到了与此类似的帖子,但那里的答案都没有帮助我。我正在寻找使用快速正则表达式检查字符串是否不包含任何特殊字符。我想允许其他 iPhone 键盘字母,尽管像中文、印地语、阿拉伯语、韩语等。但我只是不想允许像 +、&、#、$、% 这样的特殊字符。
我试过使用:
func usernameTest(testStr:String) -> Bool {
return testStr.range(of: "^[ !\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]+", options: .regularExpression) != nil
}
但是这没有用。我以为它会检查是否使用了任何特殊字符,但是当我测试诸如“Tom@@@”之类的短语时。还会!!” 它返回错误。我本来希望这会返回 true,因为我传入的字符串包含该范围内的一个或多个特殊字符。
任何帮助将不胜感激,因为我们希望我们的用户能够以任何语言创建他们的用户名,但我们仍然不希望允许空格或特殊字符。
解决方案
你可以试试这种方式
var charSet = CharacterSet.init(charactersIn: "@#$%+_)(")
var string2 = "test@3"
if let strvalue = string2.rangeOfCharacter(from: charSet)
{
print("true")
}
在字符集初始化中,您可以提供要检查出现的特殊字符。
推荐阅读
- aws-lambda - botocore.exceptions.ClientError:调用CreateBucket操作时发生错误(AccessDenied):访问被拒绝
- wix - WiX 组件 GUID 可以在不同的产品安装中复制吗
- javascript - 将 2 个应用程序合并在一起 (ASP.NET MVC - JavaScript)
- javascript - 数组在订阅范围之外变得未定义
- javascript - 是否可以使用 Google Map JavaScript API/JavaScript 在地图上放置一个大圆圈?
- python - 是否有任何不使用 Java 的 mdbtools 替代品?
- matlab - Octave:向/从文本文件写入/读取 f(x,y) 出错
- batch-file - 如何在 bat 中处理下一个命令之前等待应用程序结束?
- c# - 如何从 DecryptStringFromBytes_Aes 获得与 .NET C# 但在 Node js 中相同的结果?
- php - 是否可以在 symfony 5 中自定义违反约束错误渲染?