私は次のようないくつかのことを試しました:
^(?=.*?[A-Z])
^(?=.*?[A-Z])$
^(.*?[A-Z])$
何も機能しません
static func atLeastOneUpperCase(_ input: String) -> Bool {
return NSPredicate(format: "SELF MATCHES %@", upperCaseRegex).evaluate(with: input)
}
入力は上記のいずれかである必要があります。
あなたが使用する場合スウィフトでは、NSPredicate
とMATCHES
、あなたは完全な文字列の一致が必要です。
だから、あなたの場合、あなたは使用する必要があります
let upperCaseRegex = "(?s)[^A-Z]*[A-Z].*"
これは、大文字のASCII文字以外の0以上の文字で始まる文字列全体に一致し、次に1つのASCII文字に一致し、次に任意の0以上の文字に一致します((?s)
ドットが改行文字を含むすべての文字に一致するため)。
別の方法はrange(of:options:range:locale:)
、.regularExpression
オプションを渡してを使用することです。
return input.range(of: "[A-Z]", options: .regularExpression) != nil
これにより、固定されていない方法で正規表現を照合できます。つまり、この方法では、正規表現エンジンは部分的な一致を検索し、文字列全体の一致を必要としなくなります。
Unicodeに関する考慮事項
あなたがチェックする必要がある場合は任意の文字の大文字のUnicode、使用\p{Lu}
の代わりに[A-Z]
:
return input.range(of: "\\p{Lu}", options: .regularExpression) != nil
または、NSPredicate
バージョンを使用する必要がある場合:
let upperCaseRegex = "(?s)\\P{Lu}*\\p{Lu}.*"
ここでは、\P{Lu}*
大文字以外の0以上の文字に一致することに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加