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

#javascript #regex #apex

Вопрос:

Я ищу регулярное выражение, чтобы не допускать более одного пробела между словами, и я получаю это:

 '^[a-zA-Z0-9] (?: [a-zA-Z0-9] )*

Это работает, но я понимаю, что это не прием специальных символов, поэтому я реализовал:

 '^[a-zA-Z0-9!@#$amp;?!*%()\-`. ,/"] (?: [a-zA-Z0-9!@#$amp;?!*%()\-`. ,/"] )*

Но это заставляет меня задуматься, есть ли у него другая формула, так что я могу принимать все буквы, цифры и все специальные символы без необходимости писать все специальные символы.

Пример: "Тестовый тест" Если в нем больше одного интервала между такими словами, регулярное выражение должно это уловить.


Комментарии:

1. Вы согласны с более чем одним пробелом, которого нет между словами? Похоже, что самым простым способом справиться с этим было бы уменьшить все пробелы 1 до 1.

2. Каковы некоторые примеры пробелов между словами? Спецификация здесь кажется расплывчатой. Похоже, это / /.test(foo) должно сработать, чтобы определить, есть ли где-нибудь два последовательных пробела, хотя у нас есть теги Java, JavaScript и apex, поэтому я не уверен, на каком языке мы находимся.

3. Спасибо за ответ, я не использую язык, я использую правило проверки из Salesforce, поэтому для этого мне нужно использовать регулярное выражение

Ответ №1:

Если мое регулярное выражение верно, вы должны быть в состоянии использовать
S S
"S " - это любой символ, который не является пробелом. Все символы и буквы включены в "S", и у нас есть " " для любого 1 или более из них. Затем с одним пробелом между ними он будет соответствовать только тем словам, между которыми есть один пробел. Однако будьте осторожны, если вы применяете это к большому файлу. Это не будет проверять каждую пару слов. Если два слова совпадают только с одним пробелом, то они будут извлечены, и второе слово не будет проверено на соответствие второму;

 one two three
 

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

Это работает, но я понимаю, что это не прием специальных символов, поэтому я реализовал:


Но это заставляет меня задуматься, есть ли у него другая формула, так что я могу принимать все буквы, цифры и все специальные символы без необходимости писать все специальные символы.

Пример: "Тестовый тест" Если в нем больше одного интервала между такими словами, регулярное выражение должно это уловить.

Комментарии:

1. Вы согласны с более чем одним пробелом, которого нет между словами? Похоже, что самым простым способом справиться с этим было бы уменьшить все пробелы 1 до 1.

2. Каковы некоторые примеры пробелов между словами? Спецификация здесь кажется расплывчатой. Похоже, это / /.test(foo) должно сработать, чтобы определить, есть ли где-нибудь два последовательных пробела, хотя у нас есть теги Java, JavaScript и apex, поэтому я не уверен, на каком языке мы находимся.

3. Спасибо за ответ, я не использую язык, я использую правило проверки из Salesforce, поэтому для этого мне нужно использовать регулярное выражение

Ответ №1:

Если мое регулярное выражение верно, вы должны быть в состоянии использовать
S S
"S " - это любой символ, который не является пробелом. Все символы и буквы включены в "S", и у нас есть " " для любого 1 или более из них. Затем с одним пробелом между ними он будет соответствовать только тем словам, между которыми есть один пробел. Однако будьте осторожны, если вы применяете это к большому файлу. Это не будет проверять каждую пару слов. Если два слова совпадают только с одним пробелом, то они будут извлечены, и второе слово не будет проверено на соответствие второму;


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

Но это заставляет меня задуматься, есть ли у него другая формула, так что я могу принимать все буквы, цифры и все специальные символы без необходимости писать все специальные символы.

Пример: «Тестовый тест» Если в нем больше одного интервала между такими словами, регулярное выражение должно это уловить.

Комментарии:

1. Вы согласны с более чем одним пробелом, которого нет между словами? Похоже, что самым простым способом справиться с этим было бы уменьшить все пробелы 1 до 1.

2. Каковы некоторые примеры пробелов между словами? Спецификация здесь кажется расплывчатой. Похоже, это / /.test(foo) должно сработать, чтобы определить, есть ли где-нибудь два последовательных пробела, хотя у нас есть теги Java, JavaScript и apex, поэтому я не уверен, на каком языке мы находимся.

3. Спасибо за ответ, я не использую язык, я использую правило проверки из Salesforce, поэтому для этого мне нужно использовать регулярное выражение

Ответ №1:

Если мое регулярное выражение верно, вы должны быть в состоянии использовать
S S
«S » — это любой символ, который не является пробелом. Все символы и буквы включены в «S», и у нас есть » » для любого 1 или более из них. Затем с одним пробелом между ними он будет соответствовать только тем словам, между которыми есть один пробел. Однако будьте осторожны, если вы применяете это к большому файлу. Это не будет проверять каждую пару слов. Если два слова совпадают только с одним пробелом, то они будут извлечены, и второе слово не будет проверено на соответствие второму;


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

Это работает, но я понимаю, что это не прием специальных символов, поэтому я реализовал:


Но это заставляет меня задуматься, есть ли у него другая формула, так что я могу принимать все буквы, цифры и все специальные символы без необходимости писать все специальные символы.

Пример: «Тестовый тест» Если в нем больше одного интервала между такими словами, регулярное выражение должно это уловить.

Комментарии:

1. Вы согласны с более чем одним пробелом, которого нет между словами? Похоже, что самым простым способом справиться с этим было бы уменьшить все пробелы 1 до 1.

2. Каковы некоторые примеры пробелов между словами? Спецификация здесь кажется расплывчатой. Похоже, это / /.test(foo) должно сработать, чтобы определить, есть ли где-нибудь два последовательных пробела, хотя у нас есть теги Java, JavaScript и apex, поэтому я не уверен, на каком языке мы находимся.

3. Спасибо за ответ, я не использую язык, я использую правило проверки из Salesforce, поэтому для этого мне нужно использовать регулярное выражение

Ответ №1:

Если мое регулярное выражение верно, вы должны быть в состоянии использовать
S S
«S » — это любой символ, который не является пробелом. Все символы и буквы включены в «S», и у нас есть » » для любого 1 или более из них. Затем с одним пробелом между ними он будет соответствовать только тем словам, между которыми есть один пробел. Однако будьте осторожны, если вы применяете это к большому файлу. Это не будет проверять каждую пару слов. Если два слова совпадают только с одним пробелом, то они будут извлечены, и второе слово не будет проверено на соответствие второму;


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