Определить символ пробела в конце строки, используя Reg Exp - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно сообщить данные, которые имеют пробелы в конце строки (только конечные или начальные пробелы). Я попытался использовать приведенные ниже ключевые слова, но они не работают.

[ \f\t\v]+$ 

\b \b (это работает, только если пробел находится между двумя словами, но пробел между одним словом и одним числом не получается) Может кто-нибудь, пожалуйста, помогите с этим требованием.

Мой текущий Reg Exp: ^[a-zA-Z&-',.\s]

но \s соответствует всем пробелам (как между словами, так и в конце строки), поэтому не дает ожидаемых результатов.

Ответы [ 3 ]

0 голосов
/ 01 апреля 2019

.replace() - это то, что вам нужно.Замена - '' и флаг g lobal, который позволяет .replace() продолжать поиск после первого совпадения.

var str1 = ` 1abra kadabra hokus pokus`;
var str2 = `abra kadabra hokus pokus2 `;
var str3 = ` 3abra kadabra hokus pokus3 `;
var str4 = `abra kadabra4 hokus pokus`;
var rgx = /^\s+|\s+$/g;

console.log(str1.replace(rgx, ''));
console.log(str2.replace(rgx, ''));
console.log(str3.replace(rgx, ''));
console.log(str4.replace(rgx, ''));
0 голосов
/ 01 апреля 2019
^([a-zA-Z&-',.]+ )*[a-zA-Z&-',.]+$

Шаблон говорит, что это должно быть ноль или более слово с пробелом , за которым следует слово .

^ будет привязывать шаблон, соответствующий началу значения, а $ привязывает в конце значения. Комбинация этих двух означает, что шаблон будет совпадать только в том случае, если все значение совпадает. Без якорей шаблон будет соответствовать всему, что содержит шаблон. Ваш RegEx в вопросе имеет только начальную привязку, поэтому он будет соответствовать значению, начинающемуся с заданного вами шаблона.

Предположение: я использовал ваш RegEx без пробела в качестве определения слова ; но вы могли бы хотеть, чтобы точка запятая (и т. д.) была частью разделителя слов, а не частью слова. Если это так, то заключите пробел в квадратные скобки и переместите туда эти символы.

P.S. помните, что дефис в квадратных скобках используется в качестве индикатора диапазона, поэтому [&-'] означает диапазон символов от амперсанда до апострофа. Если вы просто пытаетесь использовать дефис в качестве символа, сделайте его первым символом в скобках, чтобы избежать этой неоднозначности.

Также обратите внимание, что в вашем вопросе говорится о числах, и ваш шаблон не охватывает этого, поэтому вам может потребоваться добавить 0-9 к обоим определениям word .

0 голосов
/ 29 марта 2019

В JavaScript:

var string1 = ' abra kadabra hokus pokus';
var string2 = 'abra kadabra hokus pokus2 ';
var string3 = ' 1abra kadabra hokus pokus ';
var string4 = 'abra kadabra hokus pokus';

var regex=/(^\s|\s$)/;

console.log(regex.test(string1));
console.log(regex.test(string2));
console.log(regex.test(string3));
console.log(regex.test(string4));
...