/Regex.swift

🔠 A Simple Swift NSRegularExpression wrapper

Primary LanguageSwiftMIT LicenseMIT

Regex.swift

CI Status Version License Platform

Regex.swift is yet another Regex μframework. The main difference is that it's only 68 lines long and intends to keep things simple yet readable. It's been used in production by millions of users and so far has proved itself 100% crash-free.

There are only 2 types: Match and Regex. If I were you I'd read the whole file, it's really quick and will give you a better understanding.

For Swift 2.2 use version 0.1.1. For Swift 3.x use version 1.0.3 For Swift 4.0+ use version 2.0+

Usage

Simply create a Regex by using Regex(pattern:) or Regex(pattern: options).

To verify if a String matches a Regex simply use regex.match(string:):

func validatePlate(plate: String) -> Bool {
    guard let regex = Regex(pattern: "^\\w{3}-?\\d{4}$") else { return false }

    return regex.match(plate)
}

If you want to grab the mathes use regex.matches(string:), it returns an array of Match:

public init?(plate: String) {
  guard let regex = Regex(pattern: "^(\\w{3})-?(\\d{4})$"),
            captureGroups = regex.matches(plate).first?.captureGroups
            where captureGroups.count == 2 else { return nil }

  letters = captureGroups[0]
  numbers = captureGroups[1]
}

Requirements

  • Regex.swift relies on NSRegularExpression and hopefully won't be necessary anymore when Swift gets a Swifty standard Regex API.

  • As of version 1.0 Regex.swift uses Swift 3.0.

Installation

Regex.swift is a single file with 68 lines. You can simply download it and add to your project or use CocoaPods.

Regex.swift is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "Regex.swift"

Contributing

PRs and issues welcome. The only rule here is: keep it as simple as possible.

FAQ

Why doesn't Regex conform to StringLiteralConvertible?

  • Because I want its initializer to be failable.

Author

Francesco Perrotti-Garcia, fpg1503@gmail.com

License

Regex.swift is available under the MIT license. See the LICENSE file for more info.