Skip to content

Commit b25f8d8

Browse files
committed
Adding regex to search
1 parent 5b598bd commit b25f8d8

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

app/utils/handleSearchInTable.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,28 @@ const handleSearchInTable = (data, header, searchString) => {
2929
});
3030
}
3131

32+
// Check if search string is a regex or needs to be case-sensitive
33+
let isCaseSensetive = /[A-Z]/.test(updatedSearchString);
34+
let regex;
35+
let isRegex = false;
36+
if (updatedSearchString.startsWith('/') && updatedSearchString.endsWith('/')) {
37+
try {
38+
regex = new RegExp(updatedSearchString.replace(/\/(.*)\//, '$1'), isCaseSensetive ? undefined : 'i');
39+
isRegex = true;
40+
} catch (error) {
41+
isRegex = false;
42+
}
43+
}
44+
3245
return data.filter(row => {
3346
let matchFound = false;
3447
matchFound = Object.keys(row)
3548
.filter(attr => ((selectedAttr !== undefined && attr === selectedAttr) || selectedAttr === undefined))
3649
.some(attr => {
3750
if (typeof row[attr] === 'string') {
38-
if (/[A-Z]/.test(updatedSearchString)) {
51+
if (isRegex) {
52+
return regex.test(row[attr]);
53+
} else if (isCaseSensetive) {
3954
return row[attr].includes(updatedSearchString);
4055
} else {
4156
return row[attr].toLowerCase().includes(updatedSearchString.toLowerCase());

0 commit comments

Comments
 (0)