Javascript RegExp and boundaries

前端 未结 5 588
北恋
北恋 2021-01-15 16:48

A colleague asked me about a Regular expression problem, and I can\'t seem to find and answer for him.

We\'re using boundaries to highlight certain lengths of text i

相关标签:
5条回答
  • 2021-01-15 16:59

    There are 2 ways to write your regular expressions in Javascript

    1. literal
    2. RegExp object

    In literal way, you use as you learned in your textbook, e.g. /balabala/ But in RegExp object, regular expression is written as a string.

    Try the following codes, you know what string behaves in javascript.

    alert("O\K");
    alert("O\\K");
    

    There's another occasion when Regexp written in a textarea or input box. For example,

    http://www.pagecolumn.com/tool/regtest.htm

    In this case, \ in Regexp need not be escaped.

    0 讨论(0)
  • 2021-01-15 17:13

    In fact you have to backslash everything in the string passed to the RegExp constructor :

    var re = /my_([\w_]+-\d-)regexp/
    

    is equivalent to :

    var re = new RegExp("my_\(\[\\\w_\]+-\\\d-\)regexp")
    

    And both match the following stupid example :

    "my_very_obvious-4-regexp".match(re)
    ["my_very_obvious-4-regexp", "very_obvious-4-"]
    
    0 讨论(0)
  • 2021-01-15 17:17

    This is a string issue. \b in a string literal is a backspace!

    RegExp('\\bAlpha\\b','gim'); would be the correct form

    0 讨论(0)
  • 2021-01-15 17:18

    I'm guessing it doesn't work because you need to escape the backslashes in your string that you pass to RegExp. You have this:

    var rx = new RegExp('\bAlpha\b','gim');
    

    You need this:

    var rx = new RegExp('\\bAlpha\\b','gim');
    

    The string you passed to RegExp has 2 backspace characters in it, since \b is the escape sequence for inserting a backspace into a string. You need to escape each backslash with another backslash.

    0 讨论(0)
  • 2021-01-15 17:19

    RegExp needs to have the escape character escaped:

    new RegExp('\\bAlpha\\b')
    
    0 讨论(0)
提交回复
热议问题