0

i am regexp noob. here my problem.

i tried to use Regexp to check if data.name inside my object is match, and return true.

here my code

$test_string = $data[i].name;

if (RegExp( '\bdate_start\b', 'i').test($test_string ) ) {
   alert($data[i].name);
   $data[i].value = $data[i].value.split("-").reverse().join("/");
}

here is example of my object $data

testArray(    
[select_leavetype] => 1    
[date_start] => 23/03/2020    
[date_end] => 23/03/2020    
[time_start] => 10:22:45 AM    
[time_end] => 10:22:45 AM    
[textarea_leavereason] => 
)

however, this code alway return false, even when true are expected. i checked console log, and there no js error appear.

Edited

here is sample input, and console data( i copy console.log($data) )

[{name: "select_leavetype", value: "1"}
 {name: "date_start", value: "17/03/2020"}
 {name: "date_end", value: "17/03/2020"}
 {name: "time_start", value: "10:51:30 AM"}
 {name: "time_end", value: "10:51:30 AM"}
 {name: "textarea_leavereason", value: ""}]

(6) [{…}, {…}, {…}, {…}, {…}, {…}]
0: {name: "select_leavetype", value: "1"}
1: {name: "date_start", value: "11/03/2020"}
2: {name: "date_end", value: "11/03/2020"}
3: {name: "time_start", value: "11:19:30 AM"}
4: {name: "time_end", value: "11:19:30 AM"}
5: {name: "textarea_leavereason", value: ""}
length: 6
__proto__: Array(0)
dwerty_weird
  • 163
  • 4
  • 17

1 Answers1

1

If you are going to create a regular expression with RegExp you can use either:

RegExp(/\bdate_start\b/, 'i')

or

RegExp('\\bdate_start\\b', 'i')

That is, you must use two backslashes in your string. \b is an escape sequence representing the single backspace character. \\b is a two-character string, a backslash followed by a b.

Looking at your data, however, it is not clear why you need to use a regular expression at all. Can't you just compare $data[i].name == 'date_start'?

Booboo
  • 38,656
  • 3
  • 37
  • 60