This is the latest docs version
Quick Links
  • -Overview
  • -Language Features
  • -JS Interop
  • -Build System
Documentation
Language Manual
Reference for all language features
ReScript & React
First class bindings for ReactJS
GenType
Seamless TypeScript integration
Reanalyze
Dead Code & Termination analysis
Exploration
Packages
Explore third party libraries and bindings
Syntax Lookup
Discover all syntax constructs
APIPlaygroundBlogCommunity
  • Playground
  • Blog
  • X
  • Bluesky
  • GitHub
  • Forum
Js Module
Overview
Js
submodules
  • Array
  • Array2
  • BigInt
  • Blob
  • Console
  • Date
  • Dict
  • Exn
  • File
  • Float
  • Global
  • Int
  • Json
    • Kind
  • List
  • Map
  • Math
  • Null
  • Null_undefined
  • Nullable
  • Obj
  • Option
  • Promise
  • Promise2
  • Re
    • t
      t
    • t
      result
    • v
      captures
    • v
      matches
      D
    • v
      index
    • v
      input
    • v
      fromString
    • v
      fromStringWithFlags
    • v
      flags
    • v
      global
    • v
      ignoreCase
    • v
      lastIndex
    • v
      setLastIndex
    • v
      multiline
    • v
      source
    • v
      sticky
    • v
      unicode
    • v
      exec_
    • v
      test_
  • Result
  • Set
  • String
  • String2
  • TypedArray2
    • DataView
    • Float64Array
    • Float32Array
    • Uint32Array
    • Int32Array
    • Uint16Array
    • Int16Array
    • Uint8ClampedArray
    • Uint8Array
    • Int8Array
    • ArrayBuffer
    Typed_array
    • DataView
    • Float64_array
    • Float64Array
    • Float32_array
    • Float32Array
    • Uint32Array
    • Int32_array
    • Int32Array
    • Uint16Array
    • Int16Array
    • Uint8ClampedArray
    • Uint8Array
    • Int8Array
    • S
    • ArrayBuffer
    • Type
  • Types
  • Undefined
  • Vector
  • WeakMap
  • WeakSet
  • API / Js / Re

    Re

    Provide bindings to JS regular expressions (RegExp).

    Note: This is not an immutable API. A RegExp object with the global ("g") flag set will modify the lastIndex property when the RegExp object is used, and subsequent uses will continue the search from the previous lastIndex.

    t

    RESCRIPT
    type t

    The RegExp object.

    result

    RESCRIPT
    type result

    The result of a executing a RegExp on a string.

    captures

    RESCRIPT
    let captures: result => array<Js.nullable<string>>

    An array of the match and captures, the first is the full match and the remaining are the substring captures.

    matches

    Deprecated

    Use Js.Re.captures instead

    RESCRIPT
    let matches: result => array<string>

    index

    RESCRIPT
    let index: result => int

    0-based index of the match in the input string.

    input

    RESCRIPT
    let input: result => string

    The original input string.

    fromString

    RESCRIPT
    let fromString: string => t

    Constructs a RegExp object (Js.Re.t) from a string. Regex literals %re("/.../") should generally be preferred, but fromString is useful when you need to dynamically construct a regex using strings, exactly like when you do so in JavaScript.

    Examples

    RESCRIPT
    let firstReScriptFileExtension = (filename, content) => { let result = Js.Re.fromString(filename ++ "\.(res|resi)")->Js.Re.exec_(content) switch result { | Some(r) => Js.Nullable.toOption(Js.Re.captures(r)[1]) | None => None } } // outputs "res" firstReScriptFileExtension("School", "School.res School.resi Main.js School.bs.js")

    fromStringWithFlags

    RESCRIPT
    let fromStringWithFlags: (string, ~flags: string) => t

    Constructs a RegExp object (Js.Re.t) from a string with the given flags. See Js.Re.fromString.

    Valid flags:

    • g global

    • i ignore case

    • m multiline

    • u unicode (es2015)

    • y sticky (es2015)

    flags

    RESCRIPT
    let flags: t => string

    Returns the enabled flags as a string.

    global

    RESCRIPT
    let global: t => bool

    Returns a bool indicating whether the global flag is set.

    ignoreCase

    RESCRIPT
    let ignoreCase: t => bool

    Returns a bool indicating whether the ignoreCase flag is set.

    lastIndex

    RESCRIPT
    let lastIndex: t => int

    Returns the index where the next match will start its search. This property will be modified when the RegExp object is used, if the global ("g") flag is set.

    Examples

    RESCRIPT
    let re = %re("/ab*TODO/g") let str = "abbcdefabh" let break = ref(false) while !break.contents { switch Js.Re.exec_(re, str) { | Some(result) => Js.Nullable.iter(Js.Re.captures(result)[0], (. match_) => { let next = Belt.Int.toString(Js.Re.lastIndex(re)) Js.log("Found " ++ (match_ ++ (". Next match starts at " ++ next))) }) | None => break := true } }

    See RegExp: lastIndex on MDN.

    setLastIndex

    RESCRIPT
    let setLastIndex: (t, int) => unit

    Sets the index at which the next match will start its search from.

    multiline

    RESCRIPT
    let multiline: t => bool

    Returns a bool indicating whether the multiline flag is set.

    source

    RESCRIPT
    let source: t => string

    Returns the pattern as a string.

    sticky

    RESCRIPT
    let sticky: t => bool

    Returns a bool indicating whether the sticky flag is set.

    unicode

    RESCRIPT
    let unicode: t => bool

    Returns a bool indicating whether the unicode flag is set.

    exec_

    RESCRIPT
    let exec_: (t, string) => option<result>

    Executes a search on a given string using the given RegExp object. Returns Some(Js.Re.result) if a match is found, None otherwise.

    Examples

    RESCRIPT
    /* Match "quick brown" followed by "jumps", ignoring characters in between * Remember "brown" and "jumps" * Ignore case */ let re = %re("/quick\s(brown).+?(jumps)/ig") let result = Js.Re.exec_(re, "The Quick Brown Fox Jumps Over The Lazy Dog")

    See RegExp.prototype.exec() on MDN.

    test_

    RESCRIPT
    let test_: (t, string) => bool

    Tests whether the given RegExp object will match a given string. Returns true if a match is found, false otherwise.

    Examples

    RESCRIPT
    /* A simple implementation of Js.String.startsWith */ let str = "hello world!" let startsWith = (target, substring) => Js.Re.fromString("^" ++ substring)->Js.Re.test_(target) Js.log(str->startsWith("hello")) /* prints "true" */

    See RegExp.prototype.test() on MDN.

    Types and values
    • t
      t
    • t
      result
    • v
      captures
    • v
      matches
      D
    • v
      index
    • v
      input
    • v
      fromString
    • v
      fromStringWithFlags
    • v
      flags
    • v
      global
    • v
      ignoreCase
    • v
      lastIndex
    • v
      setLastIndex
    • v
      multiline
    • v
      source
    • v
      sticky
    • v
      unicode
    • v
      exec_
    • v
      test_

    © 2024 The ReScript Project

    Software and assets distribution powered by KeyCDN.

    About
    • Community
    • ReScript Association
    Find us on