Регулярные вопросы, с которыми вы столкнетесь на собеседовании

внешний интерфейс JavaScript регулярное выражение опрос

Регулярные выражения, есть такие люди, как я, которые учили их много раз, но когда я их изучаю, я вроде бы понимаю их, но через какое-то время забываю. В конечном счете, я все еще недостаточно практиковался, и я всегда был на уровне только наблюдения, а не действия. Поэтому эти регулярные упражнения были собраны для того, чтобы вы могли повторить старое и узнать новое. Читателям рекомендуется сделать это самостоятельно после прочтения заголовка, а затем посмотреть на способ реализации. В этой статье не рассказывается об основах, а только фиксируются упражнения.Если в будущем появятся новые вопросы, она будет обновляться.

1. var s1 = "get-element-by-id"; Учитывая такую ​​конкатенированную строку, напишите функцию, преобразованную в строку getElementById в нотации верблюжьего регистра.

var f = function(s) {
    return s.replace(/-\w/g, function(x) {
        return x.slice(1).toUpperCase();
    })
}

2. Определить, содержит ли строка числа

function containsNumber(str) {
    var regx = /\d/;
    return regx.text(str);
}

3. Определяем номер телефона

function isPhone(tel) {
    var regx = /^1[34578]\d{9}$/;
    return regx.test(tel);
}

4. Определите, соответствует ли он указанному формату

Учитывая строку str, проверьте, соответствует ли она следующему формату

  1. XXX-XXX-XXXX
  2. где X имеет тип Number
function matchesPattern(str) {
    return /^(\d{3}-){2}\d{4}&/.test(str);
}

5. Определите, соответствует ли он формату долларов США.

Учитывая строку str, проверьте, соответствует ли она формату записи доллара

  1. начинается с $
  2. Целая часть, начиная с одной цифры, разделенной , до 3 цифр
  3. Если десятичный, длина дробной части равна 2
  4. Правильный формат: 1 023 032,03 доллара США или 2,03 доллара США, неправильный формат: 3 432 12,12 доллара США или 34 344,3 доллара США**.
function isUSD(str) {
    var regx = /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/;
    return regx.test(str);
}

6. JS реализует разделитель тысяч

function format(number) {
    var regx = /\d{1,3}(?=(\d{3})+$)/g;
    return (number + '').replace(regx, '$&,')  // $&表示与regx相匹配的字符串
}

7. Получить параметры URL

Получить параметры в URL

  1. Указать имя параметра, вернуть значение параметра или пустую строку
  2. Если имя параметра не указано, вернуть все объекты параметров или {}
  3. Возвращает массив, если есть несколько параметров с одинаковым именем
function getUrlParam(url, key) {
    var arr = {};
    url.replace(/\??(\w+)=(\w+)&?/g, function(match, matchKey, matchValue) {
       if (!arr[matchKey]) {
           arr[matchKey] = matchValue;
       } else {
           var temp = arr[matchKey];
           arr[matchKey] = [].concat(temp, matchValue);
       }
    });
    if (!key) {
        return arr;
    } else {
        for (ele in arr) {
            if (ele = key) {
                return arr[ele];
            }
        }
        return '';
    }
}

8. Подтвердите электронную почту

function isEmail(email) {
    var regx = /^([a-zA-Z0-9_\-])+@([a-zA-Z0-9_\-])+(\.[a-zA-Z0-9_\-])+$/;
    return regx.test(email);
}

9. Подтвердите идентификационный номер

Идентификационный номер может состоять из 15 или 18 цифр, 15 цифр — это все цифры, первые 17 цифр из 18 цифр — это цифры, а последняя цифра — это цифры или X.

function isCardNo(number) {
    var regx = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    return regx.test(number);
}

10. Сопоставьте китайские иероглифы

var regx = /^[\u4e00-\u9fa5]{0,}$/;

11. Удалите начальный и конечный '/'

var str = '/asdf//';
str = str.replace(/^\/*|\/*$/g, '');

12. Оцените, соответствует ли формат даты форме «2017-05-11», просто оцените, оцените только формат

var regx = /^\d{4}\-\d{1,2}\-\d{1,2}$/

13. Судя по тому, соответствует ли формат даты форме '2017-05-11', строго судить (сложно)

var regx = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;

14. Обычный IPv4-адрес

var regx = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

15. Шестнадцатеричная регуляризация цвета

var regx = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;

16. Обычный номерной знак

var regx = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;

17. Фильтровать теги HTML

var str="<p>dasdsa</p>nice <br> test</br>"
var regx = /<[^<>]+>/g;
str = str.replace(regx, '');

18. Обычная надежность пароля, не менее 6 цифр, включая не менее 1 прописной буквы, 1 строчной буквы, 1 цифры, 1 специального символа.

var regx = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;

19. Обычный URL

var regx = /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;

20. Соответствие числам с плавающей запятой

var regx = /^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$/;

21.

Напишите регулярное выражение, соответствующее "

var str = '<OPTION value="待处理">待处理</OPTION>';
var regx = /^<.*?>/;
var resiult = regx.exec(str)[0];

Наконец, порекомендуйте веб-сайт для регулярной практикиregulex, вы можете просмотреть тенденцию регулярного сопоставления

Если вам нравится, пожалуйста, следуйте за мнойGithub,датьStarНу и буду регулярно делиться знаниями в JS, ^_^