Я использовал метод замены со следующим регулярным выражением для удаления точек в конце строки: replace(/\.[^/.]+$/, ""); . Теперь я хочу изменить это, чтобы соответствовать следующим требованиям:

  • не может заканчиваться точкой,
  • не может содержать только пробелы
  • не может содержать следующие символы: \ / * ? " | : < >

Есть ли способ включить два других правила в мое правило, которое уже удаляет точку?

1
sal3jfc 15 Ноя 2022 в 21:11
Вы имеете в виду "удалить точку в конце"?
 – 
Dimava
15 Ноя 2022 в 21:16
Или вам нужно ПРОВЕРИТЬ строку, чтобы она соответствовала правилу?
 – 
Dimava
15 Ноя 2022 в 21:19
Не ясно. Пример replace(/\.[^/.]+$/, ""); удаляет точку и все после нее. Например. если у вас есть два предложения в строке, первое с точкой, второе с вопросом, оно удалит второе предложение. Можете ли вы добавить несколько примеров ввода с ожидаемым результатом?
 – 
Peter Thoeny
16 Ноя 2022 в 03:17

2 ответа

s = s
   .replaceAll(/\s/g, '')
   .replaceAll(/[\\/*?"|:<>]/g, '')
   .replace(/\.+$/, '')
1
Dimava 15 Ноя 2022 в 21:18

Используйте это комбинированное регулярное выражение, которое будет соответствовать всем вещам, которые вы хотели бы исключить: /\.+$|\\|\/|\*|\?|\"|\||\:|\<|\>|^\s+$/g.

Чтобы удалить недопустимые символы из строки, используйте:

s = s.replace(/\.+$|\\|\/|\*|\?|\"|\||\:|\<|\>|^\s+$/g, '')
if (!s) {
  // The string is entirely whitespace
}

Если вы просто хотите проверить наличие недопустимых символов, используйте:

if (/\.+$|\\|\/|\*|\?|\"|\||\:|\<|\>|^\s+$/g.exec(s)) {
  // The string is invalid
} else {
  // The string is valid
}
0
Nathan Kulzer 15 Ноя 2022 в 21:29