8

They both seem to work but I have been told you should use both when you're forming a RegExp?

HamZa
  • 13,530
  • 11
  • 51
  • 70
Evil Washing Machine
  • 1,146
  • 3
  • 17
  • 36
  • 1
    i think this is a general regex question. maybe take out javascript,html tags and change the title. – ddavison Jul 30 '13 at 15:18
  • \s denotes whitespace and where as \t denotes tab – Shushant Jul 30 '13 at 15:26
  • 1
    Just a pedantic adjustment to what most answers are saying here: `[\s\t]` is redundant. The `\t` is already part of `\s` so you don't have to include the `\t`. In the case of `\s\t`, the `\t` is not redundant. It is looking for a whitespace, followed by a tab. So be careful if you're dealing with a character class or not. – Shaz Jul 30 '13 at 15:41

4 Answers4

15

\s matches any whitespace character, including tabs. \t only matches a tab character.

\t being a subset of \s, you should not have to use both at the same time.

Frédéric Hamidi
  • 240,249
  • 39
  • 455
  • 462
13

\s matches a single whitespace character, which includes spaces, tabs, form feeds, line feeds and other unicode spaces.

\t Matches a single tab.

If you are using \s, you don't need to include \t.

More information on regex patterns here: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

talemyn
  • 7,110
  • 4
  • 25
  • 45
2

\t is a literal tab whereas \s is a predefined character class. \s matches any whitespace character while \t matches only tabs (which are also matched by \s).

This is similar to asking what the difference between \d and 0 is. 0 is a literal 0 whereas \d is any digit.

arshajii
  • 118,519
  • 22
  • 219
  • 270
0

\s contains all whitespace characters. For example, in Java, \s is [\t\n\x0b\r\f]. \t is just a single tab, so you don't need to use both.

Song Gao
  • 656
  • 4
  • 14