Allow to use Regex matches CharSequence and CharSequence matches Regex in infix form
#KT-14279
This commit is contained in:
@@ -52,7 +52,7 @@ public class Regex(pattern: String, options: Set<RegexOption>) {
|
||||
private val nativePattern: RegExp = RegExp(pattern, options.map { it.value }.joinToString(separator = "") + "g")
|
||||
|
||||
/** Indicates whether the regular expression matches the entire [input]. */
|
||||
public fun matches(input: CharSequence): Boolean {
|
||||
public infix fun matches(input: CharSequence): Boolean {
|
||||
nativePattern.reset()
|
||||
val match = nativePattern.exec(input.toString())
|
||||
return match != null && match.index == 0 && nativePattern.lastIndex == input.length
|
||||
|
||||
@@ -44,7 +44,7 @@ header class Regex {
|
||||
constructor(pattern: String, options: Set<RegexOption>)
|
||||
|
||||
fun matchEntire(input: CharSequence): MatchResult?
|
||||
fun matches(input: CharSequence): Boolean
|
||||
infix fun matches(input: CharSequence): Boolean
|
||||
fun containsMatchIn(input: CharSequence): Boolean
|
||||
fun replace(input: CharSequence, replacement: String): String
|
||||
fun replace(input: CharSequence, transform: (MatchResult) -> CharSequence): String
|
||||
|
||||
@@ -677,7 +677,7 @@ public inline fun CharSequence.replaceFirst(regex: Regex, replacement: String):
|
||||
* Returns `true` if this char sequence matches the given regular expression.
|
||||
*/
|
||||
@kotlin.internal.InlineOnly
|
||||
public inline fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)
|
||||
public inline infix fun CharSequence.matches(regex: Regex): Boolean = regex.matches(this)
|
||||
|
||||
/**
|
||||
* Implementation of [regionMatches] for CharSequences.
|
||||
|
||||
@@ -116,7 +116,7 @@ internal constructor(private val nativePattern: Pattern) {
|
||||
public val options: Set<RegexOption> = fromInt(nativePattern.flags())
|
||||
|
||||
/** Indicates whether the regular expression matches the entire [input]. */
|
||||
public fun matches(input: CharSequence): Boolean = nativePattern.matcher(input).matches()
|
||||
public infix fun matches(input: CharSequence): Boolean = nativePattern.matcher(input).matches()
|
||||
|
||||
/** Indicates whether the regular expression can find at least one match in the specified [input]. */
|
||||
public fun containsMatchIn(input: CharSequence): Boolean = nativePattern.matcher(input).find()
|
||||
|
||||
@@ -11,8 +11,8 @@ class RegexTest {
|
||||
val p = "\\d+".toRegex()
|
||||
val input = "123 456 789"
|
||||
|
||||
assertFalse(input.matches(p))
|
||||
assertFalse(p.matches(input))
|
||||
assertFalse(input matches p)
|
||||
assertFalse(p matches input)
|
||||
|
||||
assertTrue(p in input)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user