Проблемы с созданием регулярного выражения, не содержащего символ

Я хочу действовать со строками уценки в зависимости от того, начинаются ли они с одного, двух или нет.#, но я не исключаю, что его признают титулом:

      let strings = ["# Fancy Title", "## Fancy Subtitle", "Body Content")
for string in strings {
  if string.contains(/^#(^#)/) { //string should only contain **one** #, but `strings[0]` falls through now …
    // parse title
  } else if string.contains(/^##/) {
    // parse subtitle
  } else {
    // parse body
  }
}

Как правильно исключить##в моем первомifСтмт?

2 ответа

      if string.contains(/^#[^#]/) {

Вы хотите проверить, за чем следует что-нибудь, кроме другого . Это было бы:

      /^#[^#]/

Вам нужны квадратные скобки, а не скобки.


Регулярные выражения действительно не нужны. Вы можете использовать:

      if string.hasPrefix("##") {
    // parse subtitle
} else if string.hasPrefix("#") {
    // parse title
} else {
    // parse body
}

Обратите внимание, что вы хотите проверить##прежде чем вы проверите#.

Или с помощью более простых регулярных выражений:

      if string.contains(/^##/) {
    // parse subtitle
} else if string.contains(/^#/) {
    // parse title
} else {
    // parse body
}
Другие вопросы по тегам