Normally I would say to use a conditional split, but I can't off-hand like think of a way to test for numbers using an SSIS expression. The alternative is a script transformation task.
What you need is a script transformation with a synchronous output that specifies an ExclusionGroup.

Create a data flow task

Add an input source to it (your fixed-width flat text file)

Add the script component and connect it to the input source

Edit the script component -- select the Inputs and Outputs pane, select Output 0 by clicking on it, and set the ExclusionGroup property to "1" (or any nonzero value)

While still editing the script component, select the Script pane and click Edit Script...

In the script editor, edit the Input0_ProcessInputRow method to look something like the example below, where FieldName is the name of the input column you want to test (for numeric). It must be a string type, or else you must convert it to string.

Create the data output and connect it to the script component

When a single exclusion group is defined for a synchronous transformation, data is written only for rows on which Row.DirectRowToOutputxxx is called. (If you were to define more than one exclusion group, you could send different rows to different outputs.)
The Double.TryParse() function is used in this example to check for numbers. You could do it a different way, depending on what your data actually looks like. In fact it is likely that you will need to change this part. What does your data look like? Do you need to test an entire field to see if it is numeric, or just the leading characters of a field?

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

Different scripting language for one thing. The "TryParse()" is a .Net Framework equivalent of VB's IsNumeric(). The main thing is that you can filter right in the script task by giving the script component output a nonzero ExclusionGroup property value and calling DirectRowToOutputxxx only for the rows you want to pass through.
...Unless you really wanted all the rows to remain in the pipeline.

The link you posted is to the T-SQL version of ISNUMERIC(), but you are using the IsNumeric() method from .NET. Different animals, but the answer is the same: It is not a bug, that is the way it works. For example, IsNumeric() supports exponential numbers so:
123456d12 is valid. It may not be to you, but it is perfectly valid and not a bug. There are many other examples like this.